Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将项目合并到同一列表中重复的项目中_C#_Vb.net_Linq_Linq To Entities - Fatal编程技术网

C# 将项目合并到同一列表中重复的项目中

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

我在数据库中有一个查询,它在我的案例通知中返回一个对象列表,但该列表会带来很多重复项a通知可以包含多个附件,因此该查询所做的是与附件表连接,返回很多重复的notificationid,一个有很多附件的通知。因此,我想要完成的是将一个特定通知id的所有附件合并到一个项目中,假设我的通知类有一个附件列表 我这样做:

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给我的建议相同,但我只需要将分组的项目合并为一个