好的,所以我有一个包含消息对象集合的List。每隔60秒就会有一个更新的消息对象列表。第一个集合中的某些对象将根据每个对象内的ID属性更新数据。
public class Message
{
public Int64 Id { get; set; }
public string Property1 { get; set; }
public DateTime MessageDate { get; set; }
}
如何在LINQ中根据Id?
插入更新的对象答案 0 :(得分:0)
您需要获得对象Message的引用。
这样的事情:
this.Messages.ForEach(mess => {
if(mess.Id == someValue){
// do something here
}
})
答案 1 :(得分:0)
List<Message> LocalList;
List<Message> ArrivingList;
var mergedItems = LocalList.Contcat(ArrivingList);
mergedItems = (from msg in mergedItems
group msg by msg.Id into grp
let sameKey = mergedItems.Where(obj => obj.Id == grp.Id)
select sameKey.Where(obj => obj.MessageDate == grp.Max(obj2 => obj2.MessageDate)).Single()).ToList();
LocalList = (List<Message>)mergedItems;
我认为类似于上面的内容可能“有效”但我只会使用标准的Dictionary / List并编写一个小的更新例程。仅仅因为你可以使用特定工具做某事并不意味着你应该。
对我来说,基于LINQ的东西可能更难以排除故障,理解,调试,跟踪,评估等。 (将上面示例中的LocalList和ArrivingList替换为您的实际变量)