Apprendre à propos de LINQ

Vue d’ensemble

L’une des choses dont j’ai beaucoup parlé sur ce site est LINQ . Les questions que j’ai posées ont été nombreuses et variées et n’ont souvent pas beaucoup de contexte derrière elles. Donc, dans une tentative de consolider les connaissances que j’ai acquises sur Linq, je publie cette question en vue de la maintenir et de la mettre à jour avec des informations supplémentaires au fur et à mesure de mon apprentissage de LINQ.

J’espère aussi que cela se révélera être une ressource utile pour les autres personnes qui souhaitent en savoir plus sur LINQ.

Qu’est ce que LINQ?

De MSDN :

Le projet LINQ est un nom de code pour un ensemble d’extensions du .NET Framework qui englobe des opérations de requête, de définition et de transformation intégrées au langage. Il étend C # et Visual Basic avec une syntaxe en langage natif pour les requêtes et fournit des bibliothèques de classes pour tirer parti de ces fonctionnalités.

Cela signifie que LINQ fournit un moyen standard d’interroger une variété de sources de données en utilisant une syntaxe commune.

Quelles sont les saveurs de LINQ?

Actuellement, il existe plusieurs fournisseurs LINQ fournis par Microsoft:

  • Linq to Objects qui vous permet d’exécuter des requêtes sur n’importe quel object IEnumerable.
  • Linq to SQL qui vous permet d’exécuter des requêtes sur une firebase database de manière orientée object.
  • Linq to XML qui vous permet d’interroger, charger, valider, sérialiser et manipuler des documents XML.
  • Linq aux entités comme suggéré par Andrei
  • Linq à Dataset

Il y en a pas mal d’autres, dont beaucoup sont listés ici .

Quels sont les bénéfices?

  • Moyen standard d’interroger plusieurs sources de données
  • Comstackr le temps de sécurité des requêtes
  • Méthode optimisée pour effectuer des opérations basées sur des ensembles dans des objects en mémoire
  • Possibilité de déboguer les requêtes

Alors, que puis-je faire avec LINQ?

Chook fournit un moyen de sortir des fichiers CSV
Jeff montre comment supprimer les doublons d’un tableau
Bob obtient une liste ordonnée distincte à partir
Marxidad montre comment sortinger un tableau
Dana reçoit de l’aide pour implémenter un sorting rapide à l’aide de Linq

Où commencer?

Un résumé des liens de la question de GateKiller est ci-dessous :
Scott Guthrie propose une intro à Linq sur son blog
Un aperçu de LINQ sur MSDN

ChrisAnnODell suggère de vérifier:

  • Accroché à Linq
  • 101 échantillons de Linq
  • LinqPad

De quoi ai-je besoin pour utiliser LINQ?

Linq est actuellement disponible dans VB.Net 9.0 et C # 3.0. Vous aurez donc besoin de Visual Studio 2008 ou supérieur pour bénéficier de tous les avantages. (Vous pouvez toujours écrire votre code dans le bloc-notes et comstackr en utilisant MSBuild)

Il y a aussi un outil appelé LinqBridge qui vous permettra d’exécuter des requêtes similaires à C # 2.0.

Trucs et astuces avec LINQ

Cette question a des façons délicates d’utiliser LINQ

Voici 101 exemples de Linq qui sont une excellente référence si vous voulez juste un exemple syntaxique rapide.

N’oublions pas non plus LinqPad 🙂

LINQ aux entités:

  • Séances vidéo
  • Canal 9 vidéo
  • Cadre d’entité FAQ
  • Performance du framework d’entité

J’ai beaucoup d’autres choses que j’ai taguées sur Delicious.com .

Mentionnez LINQ to Entities car ADO.NET Entity Framework sera un module .NET important.

Obtenir le livre Linq in Action c’est facile à lire pour un livre de codage et vous apprend vraiment comment utiliser Linq et les nouvelles fonctionnalités de .NET 3.5.

Quelques mises en garde concernant l’utilisation de LINQ to SQL :

Microsoft a-t-il vraiment tué LINQ to SQL?

Est-ce que LINQ to SQL DOA?

Il y a aussi une controverse à propos de la première version d’ Entity Framework , y compris une pétition .

Quelques conseils LINQ:

  • Appliquer des filtres avant une jointure pour améliorer les performances des requêtes
  • Filtrer les requêtes LINQ à l’aide de la comparaison de référence d’object
  • Appliquer des agrégats pour vider des collections dans des requêtes LINQ to SQL
  • Retarder le chargement d’une propriété dans LINQ to SQL
  • Utilisez des fonctions table avec un chargement rapide activé
  • Placez les jointures dans le bon ordre dans une requête LINQ to Objects
  • Composer une requête LINQ dans une boucle

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

IMHO, un avantage négligé, mais important, est l’efficacité de codage de LINQ, par exemple combien peut être accompli avec si peu de code. Je trouve personnellement que la syntaxe de la requête est facile à lire et à comprendre.

Je pense que la réponse à “Quelles sont les saveurs de LINQ?” est incomplet. Tout d’abord, vous pouvez créer votre propre “saveur”. Oui, c’est une tâche avancée, mais il y a beaucoup d’implémentations LINQ différentes maintenant.

Voici la liste des fournisseurs LINQ existants (ainsi que d’autres ressources sur l’apprentissage de LINQ) sur le blog de Charlie Calvert: Liens vers LINQ .

Et il y a aussi une excellente série d’articles de blog par Matt Warren sur la façon de créer votre propre fournisseur LINQ: LINQ: Construire une série de fournisseurs IQueryable

Mes 2 cents, Lire les chapitres “11 expressions de requête et LINQ to Objects” et “12 LINQ beyond collections” dans le livre “C # in Depth” pour comprendre comment fonctionne LINQ.

Pour la pratique de Linq

Si vous voulez vous entraîner sur LINQ avec des exercices et des réponses, très facile à configurer et, à mon avis, génial:

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

Téléchargez depuis git, ouvrez dans Visual Studio. Votre travail consiste à faire passer les tests.

[divulgation: j’ai appris un peu de linq et je consortingbue au projet alors oui, je pense que c’est un moyen génial, rapide et efficace d’apprendre.]