linq:通过键对GroupBy
和ToLookup
。
>让我们用类说明:Person
>
<code class="language-csharp">class Person { public int PersonID { get; set; } public string Car { get; set; } }</code>
>对象的列表,其中有些人可能有多个条目(例如,拥有多辆车):Person
<code class="language-csharp">List<Person> persons = new List<Person>() { new Person { PersonID = 1, Car = "Ferrari" }, new Person { PersonID = 1, Car = "BMW" }, new Person { PersonID = 2, Car = "Audi" } };</code>
对这些人进行分组并列出他们的汽车,我们使用linq的PersonID
方法:GroupBy
<code class="language-csharp">var results = persons.GroupBy(p => p.PersonID, p => p.Car);</code>
是一个results
。每个IEnumerable<IGrouping<int, string>>
代表一个具有共同IGrouping
(通过PersonID
访问)的组,并包含一系列汽车字符串(result.Key
)。 访问此数据:result
<code class="language-csharp">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)}"); }</code>
ToLookup
创建一个字典的结构(ILookup<int, string>
):
<code class="language-csharp">var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);</code>
>
和<code class="language-csharp">List<string> carsForPerson1 = carsByPersonID[1].ToList(); Console.WriteLine($"Cars for Person 1: {string.Join(", ", carsForPerson1)}");</code>
提供直接字典式访问,而GroupBy
>为复杂的分组方案提供了更大的灵活性。ToLookup
以上是如何使用LINQ的GroupBy和Tolookup方法通过特定键进行分组数据?的详细内容。更多信息请关注PHP中文网其他相关文章!