LINQ查询不到结果返回null吗?

墨_yan 2013-10-01 07:56:08
LInq如果查询不到结果返回什么啊?返回null吗?
下面是我的部分代码:
[HttpPost]
public ActionResult Save2(CourseOrder input)
{
var re = from s in _db.CourseOrder where (input.UseTime == s.UseTime) && (input.Roomno == s.Roomno) select s;
if (re == null)
{
CourseOrder cou = new CourseOrder();
cou.UseTime = input.UseTime;
cou.Roomno = input.Roomno;
cou.Cname = input.Cname;
cou.Classname = input.Classname;
cou.Tname = input.Tname;
_db.CourseOrder.Add(cou);
_db.SaveChanges();
return RedirectToAction("Index");

}
else
{
return View("Room");
}
input是从前台输入页面返回来的一个类,我想从已经存在源数据的_db.CourseOrder里找到和input.UseTime和input.Roomno都相同的一条数据,如果查询不到,那么re的值是什么啊?我的判断语句怎么总是执行不对啊?我想根据re的值来执行后面的判断语句!谢谢
...全文
1171 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
墨_yan 2013-10-01
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
re 不会返回 null 返回的要么是一个空集合,要么是有数据的集合。 你可以用 re.Count() == 0 判断 或者用 re.First() 取得第一条数据,如果没有数据,丢出异常 用 re.FirstOrDefault() 取得第一条数据,如果没有,返回null。 用 re.Single() 取得第一条数据,并且,如果数据多余1条或者没有数据,丢出异常
谢谢 已经解决了
threenewbee 2013-10-01
  • 打赏
  • 举报
回复
re 不会返回 null 返回的要么是一个空集合,要么是有数据的集合。 你可以用 re.Count() == 0 判断 或者用 re.First() 取得第一条数据,如果没有数据,丢出异常 用 re.FirstOrDefault() 取得第一条数据,如果没有,返回null。 用 re.Single() 取得第一条数据,并且,如果数据多余1条或者没有数据,丢出异常
墨_yan 2013-10-01
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
re 只是一个运算器,它不是运算的结果。如果你把它应用到例如 .ToList() 、.Any() 、 .Count() 或者 foreach 等之中,那么 re 的表达式才被(延迟计算)。 因此 re 不可能是 null,永远不可能是 null。因为它只是一个运算器,而不是结果。 要想计算结果,需要写
if (!re.Any())
{
    ....
就是就是,真的谢谢你,查了好几天了,今天晚上终于解决了!哈哈,太高兴了! 还有,我想请教您,我现在跟着网上的教程学习ASP.NET MVC4,感觉进度特别慢,学起来特别吃力,我以前对这些一点基础都没有,我只学习过C和C++,你看看我应该按照一个什么样的学习顺序学习ASP.NET MVC4啊?需要先学那些知识,还麻烦您该推荐一些合适的书籍和学习网站!谢谢
  • 打赏
  • 举报
回复
re 只是一个运算器,它不是运算的结果。如果你把它应用到例如 .ToList() 、.Any() 、 .Count() 或者 foreach 等之中,那么 re 的表达式才被(延迟计算)。 因此 re 不可能是 null,永远不可能是 null。因为它只是一个运算器,而不是结果。 要想计算结果,需要写
if (!re.Any())
{
    ....

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧