我希望这里有人可以帮我解决这个令我头疼的问题。
如果我有两个自定义对象列表,是否有任何方法(使用LINQ或其他方式)以高效性能同步它们?性能很重要,因为可能存在列表中的大量对象。
我需要在一个列表中检查新项目或已删除项目 - 我假设这里有一个列表是主列表,只允许在那里添加新对象或者直接删除对象,所以这不会看起来太难了。
但我还需要根据时间戳(最新优先)同步对 列表所做的更改。
代码示例:
public class CalendarItem
{
public CalendarItem(int id, string subject, string content, DateTime lastUpdated, DateTime startTime, DateTime endTime)
{
Id = id;
Subject = subject;
Content = content;
LastUpdated = lastUpdated;
StartTime = startTime;
EndTime = endTime;
}
public int Id { get; }
public DateTime LastUpdated { get; }
public string Subject { get; }
public string Content { get; }
public DateTime StartTime { get; }
public DateTime EndTime { get; }
}
然后我希望能够执行以下设置:
var time = DateTime.Now;
var itemIdentical1 = new CalendarItem(1, "Item Identical On Both Lists", "", time, DateTime.Now, DateTime.Now);
var itemIdentical2 = new CalendarItem(1, "Item Identical On Both Lists", "", time, DateTime.Now, DateTime.Now);
var itemBeforeUpdate1 = new CalendarItem(2, "Item On List 1 Will Be Changed", "", time, DateTime.Now, DateTime.Now);
var itemUpdated1 = new CalendarItem(2, "Item on List 1 Changed", "", time.AddMinutes(15), DateTime.Now, DateTime.Now);
var itemBeforeUpdate2 = new CalendarItem(3, "Item On List 2 Will Be Changed", "", time, DateTime.Now, DateTime.Now);
var itemUpdated2 = new CalendarItem(3, "Item on List 2 Changed", "", time.AddMinutes(15), DateTime.Now, DateTime.Now);
var itemBeforeUpdate3 = new CalendarItem(4, "More Item On List 2 Will Be Changed", "", time, DateTime.Now, DateTime.Now);
var itemUpdated3 = new CalendarItem(4, "More Item on List 2 Changed", "", time.AddMinutes(15), DateTime.Now, DateTime.Now);
var list1 = new List<CalendarItem> { itemIdentical1, itemUpdated1, itemBeforeUpdate2, itemBeforeUpdate3 };
var list2 = new List<CalendarItem> { itemIdentical2, itemBeforeUpdate1, itemUpdated2, itemUpdated3 };
然后在这里我们应该有一个我缺少的神奇步骤,以获得以下内容:
var listOfItemsToUpdateOnList1 = List { itemUpdated2, itemUpdated3 };
var listOfItemsToUpdateOnList2 = List { itemUpdated1 };