tutorial ordenar multiple introduccion español ejemplos consultas comandos columns cadena buscar c# linq translation linq-query-syntax

c# - ordenar - GroupBy con la sintaxis del método linq(no la sintaxis de consulta)



linq c# tutorial español (4)

Como el compilador hace esta traducción por usted, encienda here y eche un vistazo.

¿Cómo se vería la siguiente consulta si estuviera usando la sintaxis del método de extensión?

var query = from c in checks group c by string.Format("{0} - {1}", c.CustomerId, c.CustomerName) into customerGroups select new { Customer = customerGroups.Key, Payments = customerGroups }


Primero, la respuesta básica:

var query = checks.GroupBy<Customer, string>(delegate (Customer c) { return string.Format("{0} - {1}", c.CustomerId, c.CustomerName); }).Select(delegate (IGrouping<string, Customer> customerGroups) { return new { Customer = customerGroups.Key, Payments = customerGroups }; });

Entonces, ¿cómo descubres estas cosas tú mismo?

Primero, descargue Reflector desde here , e instálelo.

Luego, cree un programa de muestra, como un programa de consola pequeño, que contenga el código que desea analizar. Aquí está el código que escribí:

using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication11 { public class Customer { public Int32 CustomerId; public Int32 CustomerName; } class Program { static void Main(string[] args) { var checks = new List<Customer>(); var query = from c in checks group c by String.Format("{0} - {1}", c.CustomerId, c.CustomerName) into customerGroups select new { Customer = customerGroups.Key, Payments = customerGroups }; } } }

Luego construye eso, abre el reflector y pídele que abra el archivo .exe en cuestión.

Luego navega hasta el método en cuestión, que en mi caso fue ConsoleApplication11.Program.Main .

El truco aquí es ir a la página de opciones de Reflector y pedirle que muestre la sintaxis de C # 2.0, que sustituirá a Linq con las llamadas al método estático apropiado. Haciendo eso me da el siguiente código:

private static void Main(string[] args) { List<Customer> checks = new List<Customer>(); var query = checks.GroupBy<Customer, string>(delegate (Customer c) { return string.Format("{0} - {1}", c.CustomerId, c.CustomerName); }).Select(delegate (IGrouping<string, Customer> customerGroups) { return new { Customer = customerGroups.Key, Payments = customerGroups }; }); }

Ahora, por supuesto, este código se puede escribir un poco más bonito con lambdas y similares, como lo que showed , pero con Reflector, al menos debería ser capaz de entender las llamadas de método que están involucradas.


Sé que esta es una vieja pregunta, pero para los nuevos lectores, eche un vistazo a este código de gitub .

Esto utiliza a Roslyn para tomar la sintaxis de consulta y convertirla en sintaxis de método de extensión.


Se vería así:

var query = checks .GroupBy(c => string.Format("{0} - {1}", c.CustomerId, c.CustomerName)) .Select (g => new { Customer = g.Key, Payments = g });