gpt4 book ai didi

c# - LINQ:给定一个对象列表,创建一个以子对象为键、以父对象为值的字典

转载 作者:行者123 更新时间:2023-11-30 14:20:10 26 4
gpt4 key购买 nike

我有这两个类

public class Person
{
}
public class Company
{
public List<Person> Persons
{get;set;}
}

挑战:给定公司列表(即 List<Company> Companies )。创建 dictionary用 key Person ,以及 Company 的列表他属于作为值(value)观。请注意,一个 Person 可以属于多个Companies .

我只对 LINQ 解决方案感兴趣;蛮力搜索和收集不是我想要的。

最佳答案

我想这样就可以了:

var dictionary = (from company in companies
from person in company.Persons
group company by person).ToDictionary(x => x.Key,
x => x.ToList());

或者,改用查找:

var lookup = company.SelectMany(company => company.Persons,
(company, person) => new { company, person })
.ToLookup(x => x.person, x => x.company)
.ToDictionary(x=>x.Key, x => x.ToList()) ;

请注意,这两个几乎都是“暴力搜索和收集”——只是用于暴力搜索的代码是在 LINQ 中而不是在 C# 中。如果您使用的是 LINQ to SQL(等),那么这意味着暴力破解当然可以在数据库中完成。

关于c# - LINQ:给定一个对象列表,创建一个以子对象为键、以父对象为值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1641537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com