Using more than one condition in linq's where method

前端 未结 7 1411
南方客
南方客 2020-12-15 15:44

I have a line of code using where:

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

How can I insert more than one condition? So

相关标签:
7条回答
  • 2020-12-15 16:00

    You can roll your separate conditions into a single predicate if you like:

    codebase.Methods.Where(x => (x.Body.Scopes.Count > 5) && (x.Foo == "test"));
    

    Or you can use a separate Where call for each condition:

    codebase.Methods.Where(x => x.Body.Scopes.Count > 5)
                    .Where(x => x.Foo == "test");
    
    0 讨论(0)
  • 2020-12-15 16:02

    no you can't define 2 delegates in the same where but you can build after each other or put both on same condition like this

     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 == ''  ) );
    
    0 讨论(0)
  • 2020-12-15 16:08

    What would "y" represent?

    You can just use a standard && condition. No need for a "y":

    codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.SomethingElse < 14);
    
    0 讨论(0)
  • 2020-12-15 16:09

    I don't get it. What can you not do?

    codebase.Methods.Where(x => x.Head.IsHairy && x.Body != null && x.Body.Scopes.Count > 5); 
    
    0 讨论(0)
  • 2020-12-15 16:10

    like this..

    codebase.Methods.Where(x => x.Body.Scopes.Count > 5 && x.Body.Scopes.Count < 10);
    
    0 讨论(0)
  • 2020-12-15 16:13
    codebase.Methods.Where(x => x.Body.Scopes.Count > 5).Where(x => x.Body.Scopes.TypeName == "Scopes").Where(x => x.Body.Scopes.Level == LEVEL_HIGH);
    
    0 讨论(0)
提交回复
热议问题