gpt4 book ai didi

c# - 加入两个列表比较它们的元素属性

转载 作者:行者123 更新时间:2023-11-30 21:11:18 24 4
gpt4 key购买 nike

public class Person()
{
int ID;
string Name;
DateTime ChangeDate
}



var list1 = new List<Person>
{
new Person { ID= 1, Name = "Peter", ChangeDate= "2011-10-21" },
new Person { ID= 2, Name = "John", ChangeDate= "2011-10-22" },
new Person { ID= 3, Name = "Mike", ChangeDate= "2011-10-23" },
new Person { ID= 4, Name = "Dave", ChangeDate= "2011-10-24" }
};

var list2 = new List<Person>
{
new Person { ID= 1, Name = "Pete", ChangeDate= "2011-10-21" },
new Person { ID= 2, Name = "Johny", ChangeDate= "2011-10-20" },
new Person { ID= 3, Name = "Mikey", ChangeDate= "2011-10-24" },
new Person { ID= 5, Name = "Larry", ChangeDate= "2011-10-27" }
};

作为输出,我希望有 list1 + list2 =

    Person { ID= 1, Name = "Peter", ChangeDate= "2011-10-21" },
Person { ID= 2, Name = "John", ChangeDate= "2011-10-22" },
Person { ID= 3, Name = "Mikey", ChangeDate= "2011-10-24" },
Person { ID= 4, Name = "Dave", ChangeDate= "2011-10-24" }
Person { ID= 5, Name = "Larry", ChangeDate= "2011-10-27" }

算法是这样的。加入两个列表。如果列表的元素具有相同的 ID,则按 ChangeDate 比较它们并取日期较大的一个。如果 ChangeDate 相等,则取其中任何一个,但不能同时取两者。也许连接两个列表比使用 lambda 过滤它们更容易。我试过了,但总是出现一些丑陋的代码:/

有人知道吗?

最佳答案

林奇

var q = from person in list1.Concat(list2)
group person by person.ID into g
select g.OrderByDescending(p => p.ChangeDate).First();

关于c# - 加入两个列表比较它们的元素属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108976/

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