Maison >développement back-end >C++ >SELECT VS. SELECTMANY EN LINQ à SQL: Quand dois-je utiliser lequel?

SELECT VS. SELECTMANY EN LINQ à SQL: Quand dois-je utiliser lequel?

Barbara Streisand
Barbara Streisandoriginal
2025-01-28 17:41:121025parcourir

Select vs. SelectMany in LINQ to SQL: When Should I Use Which?

Les différences et les scénarios d'application de SelectMany dans linq à sql

Lorsque vous utilisez LINQ à SQL, il est important de comprendre la différence entre

et

. Select Il est utilisé pour récupérer un seul élément de l'ensemble de données, et SelectMany les résultats de la requête utilisés pour aplatir l'ensemble imbriqué. Select SelectMany Les exemples suivants expliqueront les différences entre les deux plus clairement:

En supposant que nous avons une classe

qui contient un attribut

, qui renvoie un ensemble d'une instance Person. Afin de récupérer tous les numéros de téléphone de tout le personnel, nous pouvons utiliser PhoneNumbers: PhoneNumber Select

Cependant, contient la collection de chaque liste de numéros de téléphone, ce qui peut ne pas être le résultat que nous voulons. Afin d'aplatir ces données imbriquées et d'obtenir une liste complète des numéros de téléphone, nous utilisons
<code class="language-csharp">IEnumerable<Person> people = new List<Person>();

// Select: 返回一个电话号码列表的列表
IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);</code>
:

phoneLists SelectMany De plus, si nous voulons inclure les données du père

au résultat, nous pouvons utiliser la charge lourde
<code class="language-csharp">// SelectMany: 将集合扁平化为一个电话号码列表
IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);</code>
:

Person SelectMany En comprenant la différence entre et

, vous pouvez faire fonctionner efficacement les données dans la requête LINQ vers SQL pour récupérer et agréger avec précision les informations requises.
<code class="language-csharp">// 带结果选择器的 SelectMany: 在结果中包含父数据
var directory = people
    .SelectMany(p => p.PhoneNumbers,
                (parent, child) => new { parent.Name, child.Number });</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn