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() };
これにより、キーはandicidであり、値は全員の車リストです。特定の車を検索するには、次のことを使用できます。
これらのテクノロジーを使用することにより、C#とLINQを使用して、パブリックボンディングオブジェクトを効果的に追跡し、関連データのリストをシンプルで効率的な方法で取得できます。 コードの例が改善されましたが、これはC#のコーディング仕様に沿ったものです。
var carsByPersonId = persons.ToLookup(p => p.PersonID, p => p.Car);
以上がC#でLINQを使用してキーでオブジェクトをグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。