首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在多个列表中查找公共对象?

如何在多个列表中查找公共对象?
EN

Stack Overflow用户
提问于 2013-03-31 04:23:37
回答 2查看 1.2K关注 0票数 1

我有一个用户对象列表(List<User>)。此列表中的每个对象都有一个事件列表(List<Event>)。我需要创建一个新的事件集合,其中包含每个用户的所有事件列表中的公共对象。我的意思是,基础集合中的每个用户都有新的事件集合中的每个事件。

我认为这可以使用foreach循环来完成,但我希望有更优雅的方式来使用LINQ来完成这项工作。

霍普你会帮忙的。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-31 04:25:44

您可以使用Enumerable.InterstectEnumerable.Aggregate方法

代码语言:javascript
运行
复制
// first get events for first user
IEnumerable<Event> seed = userList.First().Events;

// intersect with events for users (except the first)
var commonItems = userList.Skip(1).Aggregate(seed, (s, u) => s.Intersect(u.Events));
票数 1
EN

Stack Overflow用户

发布于 2013-03-31 04:35:32

其思想是选择所有用户中的所有事件,然后创建相等事件的组,仅选择事件与用户数量相同的组,然后为每个组只选择一个事件。

代码语言:javascript
运行
复制
var x = users.SelectMany(u => u.Events) // select all events at once
  .GroupBy(e => e) // group them
  .Where(g => g.Count() == users.Count) // select groups with as many events as users
  .Select(g => g.Key); // select just one event for each group (the others are the same)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15723097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档