Maison > développement back-end > C++ > LINQ SELECT VS. SELECTMANY: Comment diffèrent-ils lors de l'aplatissement des collections imbriquées?

LINQ SELECT VS. SELECTMANY: Comment diffèrent-ils lors de l'aplatissement des collections imbriquées?

Susan Sarandon
Libérer: 2025-01-28 17:46:08
original
992 Les gens l'ont consulté

LINQ Select vs. SelectMany: How Do They Differ When Flattening Nested Collections?

linq selectMany: La différence entre la collection imbriquée plate

De nombreux développeurs confondent souvent les différences entre les méthodes

et

lors de l'apprentissage de la linq vers SQL. Cet article expliquera clairement leurs différences via un exemple LINQ à SQL. Select SelectMany La méthode est utilisée pour convertir chaque élément de la séquence et génère une nouvelle séquence contenant l'élément de conversion. La méthode agit sur la séquence de la séquence, et elle la flotte en une seule séquence en renvoyant les éléments dans la séquence norme.

Ce qui suit est un exemple LINQ à SQL: Select SelectMany

Dans cet exemple,

contient une série de listes, chaque liste représente le numéro de téléphone d'une personne.

La méthode fixe cette structure imbriquée et génère
<code class="language-csharp">public class PhoneNumber
{
    public string Number { get; set; }
}

public class Person
{
    public IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
    public string Name { get; set; }
}

IEnumerable<Person> people = new List<Person>();

// Select 获取一个电话号码列表的列表。
IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);

// SelectMany 将列表扁平化成单个电话号码。
IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);

// 使用带 resultSelector 参数的重载方法连接父项和子项数据:
var directory = people
    .SelectMany(p => p.PhoneNumbers,
                (parent, child) => new { parent.Name, child.Number });</code>
Copier après la connexion
, qui ne contient qu'un seul numéro de téléphone.

phoneLists De plus, nous pouvons également utiliser le paramètre SelectMany dans la méthode de charge lourde phoneNumbers, qui contient les informations de l'objet parent (personne) dans le résultat. Par conséquent, les variables

stockent une liste d'objets anonymes, qui contiennent le nom et le numéro de téléphone de la personne.

SelectMany Cet exemple complet démontre la différence de base entre les méthodes resultSelector et directory dans LINQ à SQL.

Éléments uniques de la séquence de conversion, et

séquences plates Nlice, offrant ainsi une plus grande flexibilité dans la structure des données de l'opération. Select

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal