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

时间:2010-02-17 13:44:39

标签: c#

我有一行代码使用where:

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

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

由于

7 个答案:

答案 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);