LINQ查询尝试从空集合中进行选择时出现问题

atc*_*way 5 c# linq

我有以下LINQ查询从2个集合中提取最终结果集:usersAdusersWithSecurity:

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
      };
Run Code Online (Sandbox Code Playgroud)

问题是我一直收到以下错误: Value cannot be null.

我知道问题是该usersWithSecurity集合是空的.我在结尾添加了'.DefaultIfEmpty()`但它仍然产生异常.

我如何修改我的LINQ语句以继续并返回来自和项目的所有内容usersAd(usersWithSecurity如果存在且值匹配)(如lambda中所示)?

hun*_*ter 2

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
              };
Run Code Online (Sandbox Code Playgroud)