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

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

Mary-Kate Olsen
リリース: 2025-02-02 00:21:10
オリジナル
828 人が閲覧しました

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

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

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

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

人物のリストもあります:
class Person
{
    public int PersonID;
    public string Car; // 将car改为Car,符合C#命名规范
}
ログイン後にコピー

このリストには、同じペンペルセットを持つ複数のインスタンスが含まれる場合があります。たとえば、
List<Person> persons;
ログイン後にコピー

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

グループの後、
class Result
{
    public int PersonID;
    public List<string> Cars;
}
ログイン後にコピー
を取得します

このため、LINQのGroupByメソッドを使用できます。
// 示例结果,实际结果由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" } }
};
ログイン後にコピー

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

var results = from p in persons
              group p.Car by p.PersonID into g
              select new Result { PersonID = g.Key, Cars = g.ToList() };
ログイン後にコピー
または、Lookup Dictionaryを使用して同じ結果を達成できます。

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

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

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

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