|
|
Parcourir par tags
Tous les tags » C# » .NET » linq (RSS)
Page 1 sur 4 (31 messages au total)
-
This article is available in english here.
Si vous utilisez .NET 3.5 et les nouvelles fonctionnalités fournies par C# 3.0, et tout spécialement LINQ, vous vous êtes certainement demandé pourquoi il n'y a pas d'extension nommée ForEach pour l'interface IEnumerable<T>.
A vrai dire, je n'ai toujours pas la réponse à cette question, bien ...
-
J'ai identifié un vilain bug quand on mélange les IQueryable et la syntaxe yield.
J'avais réalisé un exemple avec LINQ To SQL, un autre avec LINQ To Entities et enfin un autre avec IEnumerable<object> (qui lui ne plante pas). Diego a transformé mon exemple IEnumerable<object> en IQueryable<object> avec l'extension method ...
-
Ce quizz est un peu spécial car il est inclut dans ''un vrai post''.
Où placer le where ? Cette question a l'air très simple mais ce n'est pourtant pas si facile que ça.
Reprenons la solution que je propose sur le dernier quizz de Mitsu :
names.Select(n => (IEnumerable<char>)n).Aggregate((a, b) => a.Intersect(b)).Where(c => ...
-
Pour une fois je ne vais rien vous donner à coder. Juste une question concernant la réponse que je donne pour le Quizz 8 :
static IEnumerable<int> CommonBegining(IEnumerable<IEnumerable<int>> values)
{
return values.Aggregate((v1, v2) =>
{
IEnumerator<int> v2Enumerator = ...
-
Comme je l'ai dit dans les commentaires du Quizz 7, l'idée maintenant est de faire l'équivalent de ceci :
values.Aggregate((v1, v2) => v1.TakeWhile((v, index) => v2.Count() > index && v == v2.ElementAt(index)));
en utilisant un seul IEnumerator sur v2 pour chaque itération sur v1.
Enjoy
-
Dans mon Quizz précédent, je propose la solution suivante :
values.Aggregate((v1, v2) => v1.TakeWhile((v, index) => v2.Count() > index && v == v2.ElementAt(index)));
Simon n'a pas dût encore lire mon commentaire sinon il m'aurait déjà dit qu'en perf ce n'était pas bon.
Une des raisons qui fait que ce n'est pas bon ...
-
L'idée ici est de partir d'un IEnumerable<IEnumerable<T>> et de récupérer le début commun à tous les sous-IEnumerable :
class Program
{
static void Main(string[] args)
{
int[][] values = { new int[] { 1, 2, 3, 4, 5 }, new int[] { 1, 2, 3, 6, 7 }, new int[] { 1, 2, 8, 9 } };
foreach (int v in ...
-
Reprenons mon quizz 4 :
En C#3, comment faire une moyenne sans la méthode Average ni la méthode Sum ?
static void Main(string[] args)
{
int[] values = { 1, 2, 3 };
Console.WriteLine(Average(values));
}
static int Average(IEnumerable<int> values)
{
// Just code it
}
affichera 2.
Et rajoutons une contrainte : ...
-
En C#3, comment faire une moyenne sans la méthode Average ni la méthode Sum ?
static void Main(string[] args)
{
int[] values = { 1, 2, 3 };
Console.WriteLine(Average(values));
}
static int Average(IEnumerable<int> values)
{
// Just code it
}
affichera 2.
Enjoy
-
L'idée ici est de faire du C#3, pas du C#2, tant pis pour la perf, ce n'est pas le but ici.
On a un IEnuemrable<int> et on veut récupérer pour chaque valeur de notre IEnumerable le nombre maximum d'occurences succésives.
Le code suivant :
static void Main(string[] args)
{
var tab = new int[] { 3, 1, 2, 1, 1, 2, 3, 1, 1, 1, ...
1
|
|
|