日期:2014-05-20  浏览次数:20772 次

LINQ查询不到结果返回null吗?
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的值来执行后面的判断语句!谢谢
------解决方案--------------------
re 只是一个运算器,它不是运算的结果。如果你把它应用到例如 .ToList() 、.Any() 、 .Count() 或者 foreach 等之中,那么 re 的表达式才被(延迟计算)。

因此 re 不可能是 null,永远不可能是 null。因为它只是一个运算器,而不是结果。

要想计算结果,需要写
if (!re.Any())
{
    ....