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 ===== ");
Console.WriteLine("Tipos Complexos clausula IN de inteiros: " + inList2);
Console.WriteLine("Tipos Complexos clausula IN de strings: " + inList3);
Teremos:
===== 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

Postagens mais visitadas deste blog

Dicas C# - Usando o LINQ para contar frequências em listas

React Tutorial - Parte 1

Jquery - Introdução