在LINQ中集成NULL检查

jue*_*n d 1 c# linq null

我有一份零件清单partList.我希望Name通过过滤来获得一部分Number.就像是

var foundPart = partList.Where(part => part.Number == 1).SingleOrDefault();
if(foundPart != null)
    name = foundPart.Name;
Run Code Online (Sandbox Code Playgroud)

我可以取消null检查并将所有内容放入LINQ命令中吗?

Ser*_*kiy 8

string name = partList.Where(part => part.Number == 1)
                      .Select(part => part.Name) // project result here
                      .SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

如果您想在找不到匹配项时避免更改名称:

name = partList.Where(part => part.Number == 1)
               .Select(part => part.Name)
               .DefaultIfEmpty(name)
               .Single();
Run Code Online (Sandbox Code Playgroud)

注:我喜欢LINQ,但在这种情况下,我将简化您的查询一点点,并保持如果条件.非常清楚易懂:

var part = parts.SingleOrDefault(p => p.Number == 1);

if(part != null)
   name = part.Name;
Run Code Online (Sandbox Code Playgroud)