这两个查询之间有什么区别?
我从codes1.Count()获得0,但是从codes2.Count()获得1,但两者都应为0。
IQueryable<SecurityCode> codes1 = (from user in dataBase.SecurityUsers
from code in user.SecurityCodes
where user.UsrUserName.Equals(code.UsrUserName)
&& user.UsrPhone.Equals(phone)
select code);
IQueryable<SecurityCode> codes2 = (from user in dataBase.SecurityUsers
where user.UsrPhone.Equals(phone)
select user.SecurityCodes.FirstOrDefault());
关系显示在
下面
任何解释都将受到高度赞赏。
答案 0 :(得分:2)
FirstOrDefault将始终返回1个元素,无论它是否存在。所以你的第二个查询将始终返回元素。 (每个用户一个)
答案 1 :(得分:0)
任何集合的FirstOrDefault()意味着您将始终获得一个结果。该结果将是遇到的第一个结果,如果未找到结果,则为默认值。
如果更改第二个查询以消除FirstOrDefault(),则两个查询的计数应产生相同的结果。