LINQ更新或将对象插入List

时间:2013-11-15 18:49:42

标签: c# linq linq-to-objects

好的,所以我有一个包含消息对象集合的List。每隔60秒就会有一个更新的消息对象列表。第一个集合中的某些对象将根据每个对象内的ID属性更新数据。

public class Message
{
    public Int64 Id { get; set; }
    public string Property1 { get; set; }
    public DateTime MessageDate { get; set; }
}

如何在LINQ中根据Id?

插入更新的对象

2 个答案:

答案 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替换为您的实际变量)