У меня есть строка кода, где:
codebase.Methods.Where(x => x.Body.Scopes.Count > 5);
Как я могу вставить несколько условий? Поэтому я могу сказать x => predicate && y => predicate
?
Спасибо
У меня есть строка кода, где:
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
принимает лямбда с единственным входным параметром, который представляет собой один экземпляр последовательности, с которой вы работаете.
Вы можете, конечно, иметь несколько условий против 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);