ホームページ >バックエンド開発 >C++ >C#でLINQを使用してキーでオブジェクトをグループ化するにはどうすればよいですか?

C#でLINQを使用してキーでオブジェクトをグループ化するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-02-02 00:21:10829ブラウズ

How Can I Group Objects by a Key Using LINQ in C#?

linqボタングループオブジェクトを使用

を使用します オブジェクト指向プログラミングでは、パブリック属性またはキーグループオブジェクトに応じて非常に便利です。この例では、PersonID Groupオブジェクトに従ってLINQ(言語統合)を使用し、すべての人に関連付けられた車リストを取得する方法について説明します。

人と呼ばれるクラスがあると仮定します:

人物のリストもあります:
<code class="language-csharp">class Person
{
    public int PersonID;
    public string Car; // 将car改为Car,符合C#命名规范
}</code>

このリストには、同じペンペルセットを持つ複数のインスタンスが含まれる場合があります。たとえば、
<code class="language-csharp">List<Person> persons;</code>

私たちの目標は、PersonIDに従ってこれらのオブジェクトをグループ化し、すべての人が所有するすべての車のリストを取得することです。予想される結果を以下に示します:
<code class="language-csharp">persons = new List<Person>()
{
    new Person { PersonID = 1, Car = "Ferrari" },
    new Person { PersonID = 1, Car = "BMW" },
    new Person { PersonID = 2, Car = "Audi" }
};</code>

グループの後、
<code class="language-csharp">class Result
{
    public int PersonID;
    public List<string> Cars;
}</code>
を取得します

このため、LINQのGroupByメソッドを使用できます。
<code class="language-csharp">// 示例结果,实际结果由LINQ查询生成
var results = new List<Result>()
{
    new Result { PersonID = 1, Cars = new List<string> { "Ferrari", "BMW" } },
    new Result { PersonID = 2, Cars = new List<string> { "Audi" } }
};</code>

Groupby句では、PersonIDをグループキーとして指定し、自動車の財産を投影しました。生成されたシーケンスは、それぞれの車に関連付けられたキーのセットになります。

<code class="language-csharp">var results = from p in persons
              group p.Car by p.PersonID into g
              select new Result { PersonID = g.Key, Cars = g.ToList() };</code>
または、Lookup Dictionaryを使用して同じ結果を達成できます。

これにより、キーはandicidであり、値は全員の車リストです。特定の車を検索するには、次のことを使用できます。

これらのテクノロジーを使用することにより、C#とLINQを使用して、パブリックボンディングオブジェクトを効果的に追跡し、関連データのリストをシンプルで効率的な方法で取得できます。 コードの例が改善されましたが、これはC#のコーディング仕様に沿ったものです。
<code class="language-csharp">var carsByPersonId = persons.ToLookup(p => p.PersonID, p => p.Car);</code>

以上がC#でLINQを使用してキーでオブジェクトをグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。