首页 > 后端开发 > C++ > 如何使用LINQ的GroupBy和Tolookup方法通过特定键进行分组数据?

如何使用LINQ的GroupBy和Tolookup方法通过特定键进行分组数据?

Linda Hamilton
发布: 2025-02-02 00:11:09
原创
903 人浏览过

How Can I Group Data by a Specific Key Using LINQ's GroupBy and ToLookup Methods?

linq:通过键对GroupByToLookup

进行分组数据 LINQ提供了基于特定标准分组数据的有效方法。 当处理对象的集合并需要基于公共密钥汇总信息时,这特别有用。

>让我们用

类说明: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>
登录后复制
>提供有效的方法来根据键进行分组数据,从而使LINQ中的数据操作更加精简。

提供直接字典式访问,而GroupBy>为复杂的分组方案提供了更大的灵活性。ToLookup

以上是如何使用LINQ的GroupBy和Tolookup方法通过特定键进行分组数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板