Aprendiendo sobre LINQ

Visión de conjunto

Una de las cosas sobre las que he preguntado mucho en este sitio es LINQ . Las preguntas que hice han sido amplias y variadas y, a menudo, no tienen mucho contexto detrás de ellas. Por lo tanto, en un bash de consolidar el conocimiento que he adquirido en Linq, estoy publicando esta pregunta con el objective 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 quieran aprender sobre LINQ.

Que es LINQ?

Desde MSDN :

El proyecto LINQ es un nombre en clave para un conjunto de extensiones de .NET Framework que abarca operaciones de consulta, configuración y transformación integradas al lenguaje. Extiende C # y Visual Basic con syntax de lenguaje nativo para consultas y proporciona bibliotecas de clases para aprovechar estas capacidades.

Lo que esto significa es que LINQ proporciona una forma estándar de consultar una variedad de fonts de datos utilizando una syntax común.

¿Qué sabores de LINQ hay?

Actualmente hay algunos proveedores de LINQ diferentes proporcionados por Microsoft:

  • Linq to Objects que le permite ejecutar consultas en cualquier objeto IEnumerable.
  • Linq to SQL que le permite ejecutar consultas en una base de datos de forma orientada a objetos.
  • Linq a XML que le permite consultar, cargar, validar, serializar y manipular documentos XML.
  • Linq a entidades según lo sugerido por Andrei
  • Linq a Dataset

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

¿Cuales son los beneficios?

  • Forma estandarizada para consultar múltiples fonts de datos
  • Comstackr la seguridad del tiempo de las consultas
  • Manera optimizada para realizar operaciones basadas en conjuntos en objetos de memoria
  • Posibilidad de depurar consultas

Entonces, ¿qué puedo hacer con LINQ?

Chook proporciona una forma de generar archivos CSV
Jeff muestra cómo eliminar duplicados de una matriz
Bob obtiene una lista ordenada distinta de una tabla de datos
Marxidad muestra cómo ordenar una matriz
Dana recibe ayuda para implementar Quick Sort Using Linq

¿Donde empezar?

A continuación se incluye un resumen de los enlaces de la pregunta de GateKiller :
Scott Guthrie ofrece una introducción a Linq en su blog
Una descripción general de LINQ en MSDN

ChrisAnnODell sugiere revisar:

  • Enganchado en Linq
  • 101 muestras de Linq
  • LinqPad

¿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 obtener todos los beneficios. (Siempre puedes escribir tu código en el bloc de notas y comstackrlo usando MSBuild)

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

Consejos y trucos con LINQ

Esta pregunta tiene algunas formas complicadas de usar LINQ

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

No olvidemos tampoco a LinqPad 🙂

LINQ a entidades:

  • Recorridos de video
  • Video del canal 9
  • Preguntas frecuentes sobre el marco de la entidad
  • Rendimiento del marco de la entidad

Tengo muchas más personas etiquetadas en Delicious.com .

Mencione LINQ to Entities desde ADO.NET Entity Framework será un módulo .NET importante.

Obtenga el libro Linq in Action , es una lectura fácil para un libro de códigos y realmente le enseña a usar Linq y las nuevas características de .NET 3.5 algunas de las partes geniales que ponen para el lenguaje.

Algunas advertencias sobre el uso de LINQ to SQL :

¿Microsoft realmente mató a LINQ to SQL?

¿Es LINQ to SQL DOA?

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

Algunos consejos de LINQ:

  • Aplicar filtros antes de una unión para mejorar el rendimiento de la consulta
  • Filtrar consultas LINQ utilizando la comparación de referencias de objetos
  • Aplicar agregados a colecciones vacías en consultas de LINQ a SQL
  • Retraso al cargar una propiedad en LINQ a SQL
  • Usar funciones con valores de tabla con carga ansiosa activada
  • Coloque las uniones en el orden correcto en una consulta LINQ to Objects
  • Componer una consulta LINQ dentro de un bucle

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

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

Creo que la respuesta a “¿Qué sabores de LINQ hay?” está incompleto Antes que nada, puedes crear tu propio “sabor”. Sí, es una tarea avanzada, pero ahora hay muchas implementaciones diferentes de LINQ.

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

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

Mis 2 centavos, lea los capítulos “11 expresiones de consulta y LINQ to Objects” y “12 LINQ beyond collections” en el libro “C # in Depth” para comprender cómo funciona LINQ.

Para la práctica Linq

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

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

Descargar desde git, abrir en Visual Studio. Tu trabajo es hacer que las pruebas pasen.

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