我有一行代码使用where:
codebase.Methods.Where(x => x.Body.Scopes.Count > 5);
如何插入多个条件?所以我可以说x => predicate && y => predicate
?
由于
答案 0 :(得分:79)
如果您愿意,可以将单独的条件转换为单个谓词:
codebase.Methods.Where(x => (x.Body.Scopes.Count > 5) && (x.Foo == "test"));
或者您可以针对每个条件使用单独的Where
调用:
codebase.Methods.Where(x => x.Body.Scopes.Count > 5)
.Where(x => x.Foo == "test");
答案 1 :(得分:6)
不,你不能在同一个地方定义2个代表,但你可以在彼此之后建立或者将两者放在相同的条件下
var result = codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.Scopes.name == "" );
or
var result = codebase.Methods.Where(x => x.Body.Scopes.Count > 5 )
.where( y=> y.Body.Scopes.name == '' );
or
var result = codebase.Methods.Where(x => x.Body.Scopes.Count > 5 )
.Union( codebase.Methods.Where(y => y.Body.Scopes.name == '' ) );
答案 2 :(得分:3)
在您的示例中,y
来自哪里? Where
方法使用带有单个输入参数的lambda,该参数表示您正在操作的序列的单个实例。
当然,您可以针对x
:
Where(x => x.Foo > 5 && x.Bar < 3)
答案 3 :(得分:1)
“y”代表什么?
您可以使用标准&amp;&amp;条件。不需要“y”:
codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.SomethingElse < 14);
答案 4 :(得分:1)
我不明白。你能做什么?
codebase.Methods.Where(x => x.Head.IsHairy && x.Body != null && x.Body.Scopes.Count > 5);
答案 5 :(得分:0)
codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.Scopes.Count < 10);
答案 6 :(得分:0)
codebase.Methods.Where(x => x.Body.Scopes.Count > 5).Where(x => x.Body.Scopes.TypeName == "Scopes").Where(x => x.Body.Scopes.Level == LEVEL_HIGH);