【发布时间】:2011-11-13 10:29:53
【问题描述】:
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 过滤它们更容易。我试过了,但总是出现一些丑陋的代码:/
有人知道吗?
【问题讨论】:
-
如果可以的话,我会使用
DateTime而不是字符串值。