Qu'est-ce que ça veut dire ?
IEnumerable<int> query = from num in list
where num < 3
select num;
Est-ce un objet comme IEnumerable<T> ?
Quelqu'un peut-il le décrire ?
Qu'est-ce que ça veut dire ?
IEnumerable<int> query = from num in list
where num < 3
select num;
Est-ce un objet comme IEnumerable<T> ?
Quelqu'un peut-il le décrire ?
Vous connaissez la syntaxe normale des méthodes, non ? Des choses comme list.Add(10)
. Certains esprits malins de Microsoft ont remarqué qu'il existe des similitudes dans de nombreuses collections et listes. Les gens pourraient aimer faire des choses comme sélectionner certaines valeurs et additionner des valeurs qui devraient fonctionner sur tous sans que chaque collection fournisse une méthode pour cela.
Ils ont donc introduit méthodes d'extension Il s'agit de méthodes qui ne sont définies qu'une seule fois mais qui peuvent être appliquées à tous les objets d'un certain type, comme les collections. Voici quelques exemples list.Where
et list.Sum
. Pour utiliser les méthodes d'extension, vous devez ajouter l'espace de nom dans lequel ils sont définis . Le site Where
La méthode d'extension prend une expression lambda qui est exécutée sur chaque élément de la collection.
Disons que vous avez une liste d'entiers :
List<int> list = new List<int>();
list.Add(-1);
list.Add(0);
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
Ensuite, là où je devais auparavant écrire le code suivant pour obtenir uniquement les entiers inférieurs à trois :
List<int> query = new List<int>();
foreach(var nr in list)
{
if (nr < 3)
query.Add(nr);
}
Maintenant, en utilisant les méthodes d'extension, je peux l'écrire comme ceci :
IEnumerable<int> query = list.Where(nr => nr < 3);
Lorsqu'il est énuméré, query
ne retournera que les entiers de list
qui sont inférieurs à trois. Ces méthodes d'extension font partie intégrante de LINQ, la Langue Requête intégrée .
Cependant, pour rendre LINQ plus facile à utiliser, ils ont conçu une nouvelle syntaxe. Grâce à cette nouvelle syntaxe, LINQ est plus facile à lire et à écrire.
IEnumerable<int> query = from nr in list
where nr < 3
select nr;
Le compilateur prend la nouvelle syntaxe et la traduit dans le code mentionné précédemment, qui comprend l'élément Where
méthode. Vous voyez, c'est juste du sucre syntaxique pour faciliter le travail avec les collections.
Le site IEnumerable<int>
interface est une interface générique pour tout objet qui peut être énuméré. La forme la plus simple de l'énumération est de faire foreach
sur l'objet, et il retourne tous les entiers qu'il contient, un par un. Ainsi, la requête LINQ renvoie un objet quelconque mais vous ne savez pas exactement de quel type. Mais vous savez qu'il peut être énuméré, ce qui le rend très utile.
C'est l'équivalent en linq de dire
IEnumerable<int> GetLessThanThree(IEnumerable<int> list)
{
foreach(int num in list)
{
if (num < 3)
{
yield return num
}
}
}
ou si vous n'avez pas encore rencontré le rendement
IEnumerable<int> GetLessThanThree(IEnumerable<int> list)
{
List<int> result = new List<int>();
foreach(int num in list)
{
if (num < 3)
{
result.Add(num);
}
}
return result;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.