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