LINQ to SQL连接查询返回1而不是0 [英] LINQ to SQL Joining Query returning 1 instead of 0

查看:78
本文介绍了LINQ to SQL连接查询返回1而不是0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这两个查询有什么区别?

Whats the difference between these two query?

我从code1.Count()得到0,但从code2.Count()得到1,但是两者都应该为0.

I am getting 0 from codes1.Count() but 1 from codes2.Count() but it should be 0 for both.

 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());

关系显示在下方

任何解释将不胜感激.

推荐答案

FirstOrDefault将始终仅返回1个元素,无论该元素是否存在.因此您的第二个查询将始终返回元素. (每个用户一个)

FirstOrDefault will always return exactly 1 element, regardless of if it exists. so your second query will always return elements. (one for each user)

这篇关于LINQ to SQL连接查询返回1而不是0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆