You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从List<Event>中筛选出内部People列表含重复Email的Event对象

解决方案

你可以直接将嵌套Person对象的Email作为GroupBy的分组键,筛选出元素数≥2的分组后展开即可,符合你需求的实现代码如下:

var originalEventList = new List<Event>();
// 填充集合逻辑...

// 确认每个Event的NextStatus.People非空且仅含1个元素时可以直接用以下代码
var eventListWithDuplicates = originalEventList
    .GroupBy(e => e.NextStatus.People.First().Email)
    .Where(group => group.Count() >= 2)
    .SelectMany(group => group)
    .ToList();

如果需要兼容People可能为空/无元素的场景,可以增加前置过滤逻辑避免运行时异常:

var eventListWithDuplicates = originalEventList
    .Where(e => e.NextStatus?.People != null && e.NextStatus.People.Any())
    .GroupBy(e => e.NextStatus.People.First().Email)
    .Where(group => group.Count() >= 2)
    .SelectMany(group => group)
    .ToList();

逻辑说明

  • 以每个Event对应Person的Email为键进行分组,相同Email的Event会被归到同一组
  • 过滤掉分组内元素数小于2的分组,仅保留存在重复Email的分组
  • 用SelectMany将所有符合条件的分组内的Event对象展开为一个平级列表,就是你需要的重复Email对应的所有完整Event对象

内容的提问来源于stack exchange,提问作者mievvin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:54:02