linq:キーによるデータのグループ化GroupBy
およびToLookup
LINQは、特定の基準に基づいてデータをグループ化するための効率的な方法を提供します。 これは、オブジェクトのコレクションを扱い、共通のキーに基づいて情報を集約する必要がある場合に特に便利です。
クラスで説明しましょう:Person
class Person { public int PersonID { get; set; } public string Car { get; set; } }
オブジェクトのリストを検討してください。一部の個人は複数のエントリを持っている可能性があります(たとえば、複数の車を所有している):Person
List<Person> persons = new List<Person>() { new Person { PersonID = 1, Car = "Ferrari" }, new Person { PersonID = 1, Car = "BMW" }, new Person { PersonID = 2, Car = "Audi" } };
を使用します。
PersonID
GroupBy
var results = persons.GroupBy(p => p.PersonID, p => p.Car);
は、一般的なresults
(IEnumerable<IGrouping<int, string>>
経由でアクセス可能)を持つグループを表し、車の弦のシーケンス(IGrouping
)が含まれています。 このデータにアクセスするには:PersonID
result.Key
result
代わりに、
foreach (var result in results) { int personID = result.Key; List<string> cars = result.ToList(); // Convert to List for easier access Console.WriteLine($"Person ID: {personID}, Cars: {string.Join(", ", cars)}"); }
を作成します
ToLookup
ILookup<int, string>
データへのアクセスはより単純です:
var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);
List<string> carsForPerson1 = carsByPersonID[1].ToList(); Console.WriteLine($"Cars for Person 1: {string.Join(", ", carsForPerson1)}");
直接の辞書のようなアクセスを提供しますが、GroupBy
は複雑なグループ化シナリオにより柔軟性を提供します。
以上がLINQのGroupByおよびTolookupメソッドを使用して、特定のキーでデータをグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。