No SQL, você pode usar a seguinte sintaxe:
SELECT *
FROM MY_TABLE
WHERE VALUE_1 IN (1, 2, 3)
Existe um equivalente em C #? O IDE parece reconhecer "in" como uma palavra-chave, mas não consigo encontrar nenhuma informação sobre ela.
Então, é possível fazer algo como o seguinte:
int myValue = 1;
if (myValue in (1, 2, 3))
// Do something
Ao invés de
int myValue = 1;
if (myValue == 1 || myValue == 2 || myValue == 3)
// Do something
c#
sql
operators
in-operator
Paul Michaels
fonte
fonte
Respostas:
Se você quiser escrever .In, poderá criar uma extensão que permita fazer isso.
fonte
List.Contains()
é eu acho que você está procurando. C # temin
keyword
e não umoperator
propósito completamente diferente daquele que você está se referindo no SQL.Existem duas maneiras de usar
in
palavras-chave em C #. Suponha que você tenha uma string [] ou Lista em C #.Referindo-se a sua edição, eu colocaria seu código desta forma para fazer o que você precisa.
fonte
Você consegue fazer isso:
fonte
Você geralmente usa o
Contains
método de uma coleção.Espero que ajude.
fonte
Não há operador "in" em C #, a palavra-chave "in" é usada apenas com "foreach (... in ...)" ou "from ... in ...".
O equivalente LINQ de sua consulta SQL seria:
fonte
Duplicado de: LINQ to SQL em e não em
ou
O equivalente a consultas IN e NOT IN em LINQ to SQL seria algo assim:
e isto:
fonte
Eu concordo que a melhor maneira de implementar o operador In é com um Método de Extensão. Eu fiz um pouco diferente:
A diferença é que você não precisa colocar aspas em torno de cada valor, apenas o conjunto inteiro de valores delimitados por vírgulas, que é mais fácil de digitar:
fonte
public static bool In(this string str, params string[] stringSet)
e chame assimbool result = myString.In("Val1", "Val2", "Val3")
Você pode escrever uma extensão. Eu escrevi um tempo atrás, para fazer código como
mais legível com uma extensão que um era capaz de escrever
Aqui está o código :
Este é o específico para minhas necessidades naquele momento, mas você pode adaptá-lo e modificá-lo para corresponder a mais tipos diferentes.
fonte
Para dígitos de 0 a 9:
Para qualquer outra coisa:
fonte
Para sua pergunta atualizada, você também pode usar uma instrução switch.
fonte
Não existe um operador in que procura um valor em uma coleção, ao invés disso é um método da coleção, chamado
Contains
.A solução mais escalonável é usar um
HashSet
como coleção. A verificação de um valor em aHashSet
é próxima de uma operação O (1), em comparação com fazê-lo em aList
onde é uma operação O (n). Isso significa que você pode empacotar muitos valores em aHashSet
e ainda assim é rápido, enquanto procurar um valor em aList
fica mais lento quanto mais valores você tem.Exemplo:
fonte
Comum, LINQ muito mais poderoso:
fonte
A
in
palavra-chave em C # é para aforeach
instrução e para expressões de consulta LINQ. Não há funcionalidade equivalente aoin
operador SQL em C # per se, mas o LINQ oferece funcionalidade semelhante comContains()
.fonte
Eu faço algo assim:
fonte