簡體   English   中英

在 linq 的 where 方法中使用多個條件

[英]Using more than one condition in linq's where method

我有一行代碼使用 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 == ''  ) );

在你的例子中, y來自哪里? 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM