我在数据库中有一个查询,它返回一个对象列表(在我的情况下是通知),但该列表带来了很多重复的项目(通知可以包含多个附件,所以查询的作用是加入附件表,带回了很多重复的通知,一个带有很多附件的通知)。所以我想要实现的是将一个特定通知ID的所有附件合并到一个项目中(假设我的通知类有一个附件列表) 我这样做了:
Dim dupes = list.GroupBy(Function(x) x.Notification.NotifiedID)
.Select(Function(s) s.ToList())
.ToList()
但我不知道如何合并分组的,有什么帮助吗?
答案 0 :(得分:1)
在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()
答案 1 :(得分:1)
分组后,然后从每组中选择第一个:
var firstNotifiedItems = list.GroupBy(x=> x.Notification.NotifiedID).Select(g=> g.First()).ToList();
这将为每个notifyID提供一个项目。
但是,如果您想要新对象中的所有项目:
var notifiedItems = list.GroupBy(x=> x.Notification.NotifiedID).Select(g=> new{NotifiedID=g.First().NotifiedID, Items=g.ToList()}).ToList();
这将为您提供一个带有NotifiedID的对象以及该ID的项目列表。