在linq的where where方法中使用多个条件

我有一行代码使用:

codebase.Methods.Where(x => x.Body.Scopes.Count > 5); 

如何插入多个条件? 所以我可以说x => predicate && y => predicate

谢谢

如果您愿意,可以将单独的条件转换为单个谓词:

 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"); 

不,你不能在同一个地方定义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 == '' ) ); 

在你的例子中,你来自哪里? Where方法采用带有单个输入参数的lambda,该参数表示您正在操作的序列的单个实例。

当然,您可以针对x设置多个条件:

 Where(x => x.Foo > 5 && x.Bar < 3) 

“y”代表什么?

您可以使用标准的&&条件。 不需要“y”:

 codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.SomethingElse < 14); 

我不明白。 你能做什么?

 codebase.Methods.Where(x => x.Head.IsHairy && x.Body != null && x.Body.Scopes.Count > 5); 

像这样..

 codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.Scopes.Count < 10); 
 codebase.Methods.Where(x => x.Body.Scopes.Count > 5).Where(x => x.Body.Scopes.TypeName == "Scopes").Where(x => x.Body.Scopes.Level == LEVEL_HIGH);