GQ08 VI: l’équivalent de ‘in’ avec Linq to Sql

Linq to Sql est capable de générer le ‘in’ Sql. Cela se traduit en Linq par l’usage de la méthode .Contains(). L’exemple ci-dessous compile mais pourtant plante à l’exécution. Pourquoi donc ? var db = new NorthwindDataContext(); var cq = CompiledQuery.Compile((NorthwindDataContext ctx, string[] cities) => from c in ctx.Customers where cities.Contains(c.City) select c); var list…

8

Performance avec Linq to object: streamée ou non ?

Rappelons un point important qu’il est toujours bon d’avoir en tête lorsque l’on fait du Linq to Object.Une majorité des opérations de Linq déroulent l’énumération source et exploitent chaque élément un par un pour effectuer leur traitement. Aucune collection intermédiaire interne n’est utilisée. Nous appelons ces opérations “streamed”. Comme le nom l’indique, ces opération travaillent…

1

[Réponse] GQ08 V: révisons les ensembles

Réponse au quizz précédent. Ce quizz va me permettre de rappeler plusieurs points intéressants: – Jouer avec les chaînes de caractères est toujours un jeu dangereux d’un point de vue de la performance. N’oublions pas qu’en .Net une chaîne est une collection de caractères en lecture seule (immuable). Les syntaxes utilisant les surcharges d’opérateur (ex:…

4

GQ08 V: révisons les ensembles

Voici un cinquième quizz pour le week-end. Soupçonnant une semaine de 15 août un peu désertée je reprendrai plus activement les quizzs la semaine prochaine. Je vous propose ici de rechercher la liste distincte des caractères présents dans l’ensemble des chaînes de caractères. Puis dans une second temps, l’ensemble des caractères présents dans toutes les…

15

GQ08 IV: Linq to Sql bug ?

Un peu de Linq to Sql ! Le fonctionnel est simple, j’aimerais depuis toutes les catégories récupérer une liste d’éléments regroupant le nom de la catégorie ainsi qu’un dictionnaire des produits appartenants à cette catégorie. Ceci afin de pouvoir retrouver rapidement un produit appartenant à une catégorie. Le code suivant est syntaxiquement correct, il compile…

14

GQ08 III: mettons les choses à plat

Imaginons un tableau quelconque à deux dimensions. J’aimerais tout simplement lister l’ensemble des données sous forme d’un simple vecteur en éliminant la seconde dimension. var values = new int[][] { new int[] {1, 2, 3}, new int[] {4, 5, 6}, new int[] {7, 8, 9} }; var q = ? foreach (var i in q)…

3

[Réponse] GQ08 II: combinaisons

Voici la réponse au précédent Quizz. Pour la version simple: var q = from v1 in values1 from v2 in values2 select v1 + v2;En effet, comme un serveur de base de données, Linq to object fait un produit cartésien lorsque l’on définit plusieurs source de données. Dans cette première écriture relativement simple et lisible,…

1

GQ08 II: combinaisons

Encore un petit assez simple mais attention, bonus pour celui qui l’écrit en C# classique sans utiliser la ‘sugar syntax’ de Linq.Je voudrais lister l’ensemble des associations possibles avec les éléments de ces deux tableaux. var values1 = new string[] { "1", "2", "3" }; var values2 = new string[] { "A", "B" }; var…

10

Geek Quizz 08: c’est reparti !

Pas sûr d’en faire 12 comme l’année dernière mais il faut bien se lancer, alors allons-y ! Un petit facile pour s’échauffer: var values = new string[] { "723", "23", "345", "3453", "006" }; var q = ? foreach (var i in q) Console.WriteLine(i); J’aimerais avoir la liste des mots triée de manière croissante par…

16