ホームページ > バックエンド開発 > C++ > linq select vs. selectmany:ネストされたコレクションを平坦化するとき、それらはどのように異なりますか?

linq select vs. selectmany:ネストされたコレクションを平坦化するとき、それらはどのように異なりますか?

Susan Sarandon
リリース: 2025-01-28 17:46:08
オリジナル
992 人が閲覧しました

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

linq selectmany:フラットネストコレクションの違い

多くの開発者は、LINQをSQLに学習するときに、

メソッドと

メソッドの違いを混同します。この記事では、LINQからSQLの例を介してそれらの違いを明確に説明します。 Select SelectManyこのメソッドは、シーケンス内の各要素を変換するために使用され、変換要素を含む新しいシーケンスを生成します。 メソッドは、シーケンスのシーケンスに作用し、ノルムシーケンスの要素を返すことにより、単一のシーケンスに平らになります。

以下はlinqからsqlの例です。Select SelectMany

この例では、

には一連のリストが含まれています。各リストは人の電話番号を表します。このメソッドは、このネストされた構造を平坦化し、1つの電話番号のみを含む

を生成します。
<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>
ログイン後にコピー
さらに、結果に親オブジェクト(人)の情報を含む

重い負荷法でphoneListsパラメーターを使用することもできます。したがって、変数は、その人の名前と電話番号を含む匿名オブジェクトのリストを保存します。 SelectMany phoneNumbersこの包括的な例は、linqからSQLのメソッドの基本的な違いを示しています。変換シーケンス内の単一要素、および

フラットNLICINGシーケンスにより、操作データ構造の柔軟性が向上します。

以上がlinq select vs. selectmany:ネストされたコレクションを平坦化するとき、それらはどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート