Подтвердить что ты не робот

Использование более одного условия в linq, где метод

У меня есть строка кода, где:

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

Как я могу вставить несколько условий? Поэтому я могу сказать x => predicate && y => predicate?

Спасибо

4b9b3361

Ответ 1

Вы можете свернуть свои отдельные условия в один предикат, если хотите:

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

нет, вы не можете определить 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 == ''  ) );

Ответ 3

В вашем примере, откуда приходит y? Метод Where принимает лямбда с единственным входным параметром, который представляет собой один экземпляр последовательности, с которой вы работаете.

Вы можете, конечно, иметь несколько условий против x:

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

Ответ 4

Что будет представлять "y"?

Вы можете просто использовать стандартный && состояние. Нет необходимости в "y":

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

Ответ 5

Я не понимаю. Что вы не можете сделать?

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

Ответ 6

как это..

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

Ответ 7

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