Linq Lambda Where子句在where子句中

DaI*_*mTo 1 c# linq lambda

我正在尝试使用serval构建一个lambda表达式,其中where子句相互之间.

项目,webProperties和配置文件都是列表.我试图找到一个包含3级列表的配置文件.实际上,我真正想做的就是验证它确实存在.

 var x = AccountSummeriesResponse.items.Where(wp => wp.webProperties.Where(p => p.profiles.Where(a => a.id == profile ))).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误.

无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'bool'

Rah*_*ngh 10

问题是Enumerable.Where返回,IEnumarable<T>但谓词Where预期boolen.您可以使用Any代替: -

var x = AccountSummeriesResponse.items
           .Where(wp => wp.webProperties.Any(p => p.profiles.Any(a => a.id == profile )))
           .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

此外,您可以像这样替换Where with FirstOrDefault: -

 var x = AccountSummeriesResponse.items
         .FirstOrDefault(wp => wp.webProperties.Any(p => p.profiles
                                               .Any(a => a.id == profile )));
Run Code Online (Sandbox Code Playgroud)