Aprendiendo sobre LINQ [en espera]


Descripción general

Una de las cosas sobre las que he preguntado mucho en este sitio es LINQ. Las preguntas que he hecho han sido amplias y variadas y a menudo no tienen mucho contexto detrás de ellas. Así que en un intento de consolidar el conocimiento que he adquirido en Linq estoy publicando esta pregunta con el fin de mantenerla y actualizarla con información adicional a medida que continúo aprendiendo sobre LINQ.

También espero que resulte ser un recurso útil para otras personas que deseen más información sobre LINQ.

¿Qué es LINQ?

De MSDN :

El proyecto LINQ es un nombre en clave para un conjunto de extensiones a. NET Marco que abarca consulta, conjunto y transformar las operaciones. Se extiende C# y Visual Basic con lengua materna sintaxis para consultas y proporciona clase bibliotecas para aprovechar estos capacidad.

Lo que esto significa es que LINQ proporciona una forma estándar de consultar una variedad de fuentes de datos usando una sintaxis común.

¿Qué sabores de LINQ hay?

Actualmente hay algunos proveedores LINQ diferentes proporcionados por Microsoft:

Hay bastantes otros, muchos de los cuales se enumeran aquí.

¿cuáles son los beneficios?

  • Forma estandarizada de consultar múltiples fuentes de datos
  • Seguridad en el tiempo de compilación de las consultas
  • Forma optimizada de realizar operaciones basadas en conjuntos en objetos de memoria
  • Capacidad para depurar consultas

Entonces, ¿qué puedo hacer con LINQ?

Chook proporciona un camino a salida de archivos CSV
Jeff muestra cómo eliminar duplicados de un array
Bob obtiene una lista ordenada distinta de una datatable
Marxidad muestra cómo ordenar un array
Dana recibe ayuda para implementar un Quick Sort Usando Linq

¿Por dónde empezar?

Un resumen de enlaces de Gatekiller's pregunta están a continuación :
Scott Guthrie proporciona una introducción a Linq en su blog
Una visión general de LINQ en MSDN

ChrisAnnODell sugiere salir:

¿Qué necesito para usar LINQ?

Linq está actualmente disponible en VB.Net 9.0 y C # 3.0, por lo que necesitará Visual Studio 2008 o superior para obtenga todos los beneficios. (Siempre puedes escribir tu código en el bloc de notas y compilar usando MSBuild)

También hay una herramienta llamada LinqBridge que le permitirá ejecutar consultas similares a Linq en C# 2.0.

Consejos y trucos usando LINQ

Esta pregunta tiene algunas formas complicadas de usar LINQ

Author: lomaxx, 2008-08-19

10 answers

Aquí están 101 muestras de Linq que son una gran referencia si solo desea un ejemplo sintáctico rápido.

Tampoco olvidemos LINQPad :)

 45
Author: ChrisAnnODell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-25 10:33:57
 10
Author: Chris S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-28 12:11:15

Mencione LINQ a las Entidades desde ADO.NET Entity Framework será un importante módulo. NET.

 6
Author: Andrei Rînea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-28 22:52:29

Consigue el libro Linq en acción es una lectura fácil para un libro de codificación y realmente te enseña cómo usar Linq y las nuevas características de.NET 3.5 algunas de las partes geniales que ponen para el idioma.

 4
Author: David Basarab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-30 02:02:43

Algunos consejos LINQ:

  • Aplica filtros antes de una unión para mejorar el rendimiento de la consulta
  • Filtrar consultas LINQ usando la comparación de referencia de objetos
  • Aplicar agregados a colecciones vacías en LINQ a consultas SQL
  • Retrasar la carga de una propiedad en LINQ a SQL
  • Use funciones con valor de tabla con carga ansiosa activada
  • Poner las uniones en el orden correcto en una consulta LINQ to Objects
  • Componer una consulta LINQ dentro de una bucle

Http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp

 4
Author: Konstantin Tarkus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-03 20:14:24

EN mi humilde opinión, un beneficio pasado por alto, pero importante, es la eficiencia de codificación de LINQ, por ejemplo, cuánto se puede lograr con tan poco código. Personalmente encuentro la sintaxis de consulta fácil de leer y comprender.

 4
Author: Matthew Sposato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-12-10 21:22:22

Algunas advertencias sobre el uso de LINQ para SQL :

¿Microsoft ha matado realmente a LINQ a SQL?

Es LINQ a SQL DOA?

También hay algo de controversia sobre la primera versión de Entity Framework, incluyendo una petición .

 3
Author: DOK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:44

Creo que la respuesta a " ¿Qué sabores de LINQ hay?"está incompleta. En primer lugar, puede crear su propio "sabor". Sí, es una tarea avanzada, pero ahora hay muchas implementaciones de LINQ diferentes.

Aquí está la lista de proveedores de LINQ existentes (más algunos recursos más sobre el aprendizaje de LINQ) en el blog de Charlie Calvert: Enlaces a LINQ.

Y también hay una excelente serie de entradas de blog de Matt Warren sobre cómo crear su propio proveedor de LINQ: LINQ: Construyendo una serie de proveedores IQueryable

 3
Author: Alexandra Rusina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-06 17:56:08

Mis 2 centavos , Lea los capítulos "11 Query expressions and LINQ to Objects" y "12 LINQ beyond collections" en el libro "C# in Depth" para entender cómo funciona LINQ.

 2
Author: refactor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-07 11:19:26

Para la Práctica Linq

Si quieres un poco de práctica en LINQ con ejercicios y respuestas, muy fácil de configurar y, en mi opinión, impresionante:

Https://github.com/walkhard/linq-exercises

Descarga desde git, abre en Visual Studio. Tu trabajo es hacer pasar las pruebas.

[divulgación: aprendí algo de linq y contribuyo al proyecto, así que sí, creo que es una manera increíble, rápida y eficiente de aprender.]

 0
Author: BKSpurgeon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-28 00:34:07