Existe um método no Linq onde você pode usar para construir strings SQL como "... where (a = 1) OR (a = 2)"?
.net
linq
where-clause
dstr
fonte
fonte
||
e queira algo dinâmico, comoa=a.where(hour=> hour<20); if(weekend) a=a.where(hour=> hour>6);
. Você pode querer afirmar isso de forma mais clara ...Respostas:
Você certamente pode fazer isso dentro de uma cláusula Where (método de extensão). Se você precisar construir uma consulta complexa dinamicamente, poderá usar um PredicateBuilder .
Ou usando um PredicateBuilder
fonte
Você pode usar os operadores booleanos padrão do .NET em sua única cláusula where:
fonte
Você usa todos os mesmos operadores que em C # normal ===> || para "ou" && para "e" etc.
fonte
em sua
.Where()
chamada, use o operador booleano padrão 'Or'||
,.Tudo o que a chamada Where faz é uma comparação booleana em qualquer coisa que você quiser, então você pode preenchê-la com a lógica condicional que desejar.
fonte
Se você não sabe a contagem de parâmetros, pode usar isto:
Dados de amostra
Código
fonte
Agora ele está integrado ao .net, não tenho certeza se não estava. Dada uma consulta Linq existente, você pode adicionar uma cláusula where que pega uma matriz de strings (SearchStrings) e verificar se alguma delas corresponde a qualquer objeto na coleção que você está pesquisando. Usar ToLower () apenas garante que você evite a diferenciação de maiúsculas e minúsculas em consultas SQL.
Você pode fazer a mesma coisa para um predicado 'and' combinando todas as palavras na matriz com o objeto da coleção.
Neste exemplo, i se correlaciona com cada objeto em uma coleção es se correlaciona com cada string no array SearchStrings.
fonte