gpt4 book ai didi

c# - Linq - 将来自不同对象的子列表合并到一个对象中

转载 作者:太空狗 更新时间:2023-10-29 20:18:23 24 4
gpt4 key购买 nike

我有一个对象,它有一个日期和一个人的列表,一个人有名字和姓氏。像这样的东西:

PeopleInfo
----------
DateTime - StartDate
List<Person> - People

Person
------
string - FirstName
string - LastName

我有一个人员信息列表,其中有多个相同的 StartDates,每个都有自己的人员列表。是否可以使用 linq 将它们合并为一个对象?

例子

StartDate - 1/1/2011, People Bob, Sue, Jane
StartDate - 2/2/2011, People Scott, Rob, Mark
StartDate - 1/1/2011, People Fred, Gill, Jack

预期输出

StartDate - 1/1/2011, People Bob, Sue, Jane, Fred, Gill, Jack
StartDate - 2/2/2011, People Scott, Rob, Mark

这在 linq 中可能吗?

谢谢

最佳答案

你可以这样做:

List<PeopleInfo> peopleInfos = ...

var merged = from peopleInfo in peopleInfos
group peopleInfo by peopleInfo.StartDate into dateGroup
select new PeopleInfo
{
StartDate = dateGroup.Key,
People = dateGroup.SelectMany(pi => pi.People)
.Distinct()
.ToList()
};

但这看起来真的很像 hack;我建议您以一种首先防止这种“重复日期”情况发生的方式设计容器类。例如ILookup<DateTime, Person> 的实现或 IDictionary<DateTime, List<Person>>HashSet<PeopleInfo>使用StartDate为了平等。

关于c# - Linq - 将来自不同对象的子列表合并到一个对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969059/

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