Dicas C# - Cláusula IN para um querie a partir de uma lista
Olá caros leitores,
Exemplo completo no final do post!
O que veremos neste post:
Extrair no C# de forma ágil e elegante uma cláusula IN para um querie a partir de uma lista do objetos de tipos primitivos e complexos.
Já vi muitos códigos que a pessoa faz um Foreach e tira a ultima vírgula do final mas utilizar um método pronto no C# é muito mais elegante e clean.
Utilizaremos o Join (String.Join)
Cenario:
Imagine a Classe:
public class ObjComplexo{
public int campo1 {get; set; } public int cmapo2 {get; set; }
}
Agora vamos criar uma lista com tipos primitivos:
//========= Tipos Primitivos =========//
var lista = new List<int>();
lista.Add(1);
lista.Add(2);
lista.Add(3);
lista.Add(4);
lista.Add(5);
Retorno esperado:
===== Tipos Primitivos =====
Tipos Primitivos clausula IN de inteiros: (1, 2, 3, 4, 5)
Tipos Primitivos clausula IN de strings: ('1', '2', '3', '4', '5')
Código necessário para fazer o que queremos:
var inList = "(" + string.Join(", ", lista.Select(t => t)) + ")";
var strList = "('" + string.Join("', '", lista.Select(t => t)) + "')";
Simples assim.
Utilizamos do método da Classe String ( Join ) para fazer a mágiga e concatenamos com plic quando necessário.
Se printarmos no console:
Console.WriteLine("===== Tipos Primitivos ===== ");
Console.WriteLine("Tipos Primitivos clausula IN de inteiros: " + inList);
Console.WriteLine("Tipos Primitivos clausula IN de strings: " + strList);
Teremos:
===== Tipos Primitivos =====
Tipos Primitivos clausula IN de inteiros: (1, 2, 3, 4, 5)
Tipos Primitivos clausula IN de strings: ('1', '2', '3', '4', '5')
Agora vamos criar uma lista com tipos complexos:
//============== Tipos Complexos ===============//
var obj1 = new ObjComplexo {
campo1 = 1,
cmapo2= 10
}; var obj2 = new ObjComplexo {
campo1 = 2,
cmapo2= 20
}; var obj3 = new ObjComplexo {
campo1 = 3,
cmapo2= 30
};
Código necessário para fazer o que queremos:
var inList2 = "(" + string.Join(",", listaObj.Select(t => t.campo1)) + ")";
var inList3 = "('" + string.Join("','", listaObj.Select(t => t.campo1)) + "')";
Se printarmos no console:
Console.WriteLine("===== Tipos Complexos ===== ");Teremos:
Console.WriteLine("Tipos Complexos clausula IN de inteiros: " + inList2);
Console.WriteLine("Tipos Complexos clausula IN de strings: " + inList3);
===== Tipos Complexos =====
Tipos Complexos clausula IN de inteiros: (1,2,3)
Tipos Complexos clausula IN de strings: ('1','2','3')
Abaixo vc confere o código final:
Comentários
Postar um comentário