C# 将项目合并到同一列表中重复的项目中
我在数据库中有一个查询,它在我的案例通知中返回一个对象列表,但该列表会带来很多重复项a通知可以包含多个附件,因此该查询所做的是与附件表连接,返回很多重复的notificationid,一个有很多附件的通知。因此,我想要完成的是将一个特定通知id的所有附件合并到一个项目中,假设我的通知类有一个附件列表 我这样做:C# 将项目合并到同一列表中重复的项目中,c#,vb.net,linq,linq-to-entities,C#,Vb.net,Linq,Linq To Entities,我在数据库中有一个查询,它在我的案例通知中返回一个对象列表,但该列表会带来很多重复项a通知可以包含多个附件,因此该查询所做的是与附件表连接,返回很多重复的notificationid,一个有很多附件的通知。因此,我想要完成的是将一个特定通知id的所有附件合并到一个项目中,假设我的通知类有一个附件列表 我这样做: Dim dupes = list.GroupBy(Function(x) x.Notification.NotifiedID) .Select(Funct
Dim dupes = list.GroupBy(Function(x) x.Notification.NotifiedID)
.Select(Function(s) s.ToList())
.ToList()
但是我不知道如何合并分组的,这里有什么帮助吗?试试c语言
list.GroupBy(x=> x.Notification.NotifiedID).SelectMany(o=> o);
我不知道VB,但你可以试试这个
Dim dupes = list.GroupBy(Function(x) x.Notification.NotifiedID)
.SelectMany(Function(s) s)
.ToList()
分组后,从每个组中选择第一个:
var firstNotifiedItems = list.GroupBy(x=> x.Notification.NotifiedID).Select(g=> g.First()).ToList();
这将为您提供一个项目的每一个通知
但是,如果希望在新对象中包含所有项,请执行以下操作:
var notifiedItems = list.GroupBy(x=> x.Notification.NotifiedID).Select(g=> new{NotifiedID=g.First().NotifiedID, Items=g.ToList()}).ToList();
这将为您提供一个具有NotifiedID的对象和该ID的项目列表。我不完全确定,但我认为您只需将Select更改为SelectMany即可获得所需内容。@JohnSaunders将返回相同的输入列表,我想合并一个具有相同id的项目,你应该回复@AustinSalonent该查询只返回第一个,非常明确,但我需要所有按相同id分组的项目,并合并这些项目。这与Austin Salonen给我的建议相同,但我只需要将分组的项目合并为一个