Métodos C# equivalente em C# (versão ES6)

No post anterior mostrei algumas funções do LINQ equivalente em JavaScript, porém, na versão suportada até o ECMAScript 5. Esse post tem o código atualizado para a versão ES6

Vamos utilizar o mesmo array simples para manipular os dados:

let usuarios = [ 
	{ nome: "Tiago", id: 1 }, 
	{ nome: "Crizanto", id: 2 }, 
	{ nome: "John", id: 3 }, 
	{ nome: "Doe", id: 4 }
];

LINQ Where

let filtroPorId = usuarios.filter(x => x.id <= 2)

console.log("Id:", filtroPorId);

LINQ Select

let nomes = usuarios.map(x => x.nome)

console.log("Nome:", nomes);

LINQ All

let maiorQueDois = usuarios.every(x => x.id > 2); //existe id maior que dois?

console.log("Id's maiores que 2: ", maiorQueDois); //true

LINQ Any

let menorQueTres = usuarios.some(x => x.id < 1); //existe id menor que 1?

console.log("Id's menores que 3", menorQueTres); // false

LINQ Sum

let somaIds = usuarios.reduce((item1, item2) => {
	return  { nome: '', id: item1.id + item2.id };
});

console.log("Soma Id's", somaIds.id);

LINQ OrderBy

let ordenadoPorNome = usuarios.sort(function (a, b) {
	return  a.nome < b.nome ? 1 : -1;
});
//Ordenação decrescente. Para ordenar de forma crescente basta utilizar a.nome > b.nome

console.log("Ordenado por nome:", ordenadoPorNome); 

Combinando funções

Também é possível combinar funções como por exemplo retornar o de forma ascendente os id’s maiores que 2:

let data = usuarios.filter((pessoa) => {
	return pessoa.id > 2;
}).map((pessoa) => {
	return pessoa.nome;
}).sort((a, b) => {
	return a > b ? 1 : -1;
});

console.log("Usuário com id > 2 ordenado decrescente:", data);