我有以下LINQ查询从2个集合中提取最终结果集:usersAd和usersWithSecurity:
var results = from usrAd in usersAd
from usrRepo in usersWithSecurity
.Where(x => usrAd.Value.ToLower() == x.Value.ToLower())
.DefaultIfEmpty()
select new User(userRepository)
{
ID = usrRepo == null ? null : usrRepo.ID,
Value = usrAd.Value,
FullName = usrAd.FullName
};
问题是我不断收到以下错误:值不能为空.
我知道问题是usersWithSecurity集合是空的.我在结尾添加了’.DefaultIfEmpty()`但它仍然产生异常.
我如何修改我的LINQ语句继续并返回usersAd和usersWithSecurity中的所有项目(如果存在且值匹配(如lambda中所示))?
解决方法:
var usersWithSecurity = _biz.getUsersWithSecurity() ?? new List<User>();
var results = from usrAd in usersAd
from usrRepo in usersWithSecurity
where usrAd.Value.ToLower() == usrRepo.Value.ToLower()
select new User(userRepository)
{
ID = usrRepo == null ? null : usrRepo.ID,
Value = usrAd.Value,
FullName = usrAd.FullName
};
标签:c,linq 来源: https://codeday.me/bug/20190520/1141499.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。