如何从重复记录中提取指定Enum值的单条记录并保留顺序?
问题解答
完全可以实现提取指定Enum值的单条重复记录,还能同时满足「保留数据原有顺序、每种Enum值仅显示一条」的需求,分两种场景说明:
1. 仅提取单个指定Enum值的单条记录
你当前的代码已经能达成这个目标:
var result = rpcResponse.Result; var targetRecord = result.Where(x => x.Event == Event.SendEmail).FirstOrDefault();
这段代码会按照原集合的顺序,找到第一个Event为SendEmail的记录,直接取这条就完成了指定Enum值的单条提取,完全符合要求。
2. 全局去重:所有Enum值各保留第一条记录
如果需要处理全部80条数据,让每种Enum值仅保留原顺序里的第一条记录,可以用GroupBy结合First()实现:
var result = rpcResponse.Result; var deduplicatedResult = result .GroupBy(x => x.Event) .Select(g => g.First()) .ToList();
GroupBy(x => x.Event):按Enum字段分组,将相同Event的记录归为同一组Select(g => g.First()):每组取原顺序中的第一条记录,确保整体顺序和原集合一致- 最终得到的集合就是每种Enum值仅一条、且保留原数据顺序的结果
内容的提问来源于stack exchange,提问作者lakykytik
相关产品推荐
相关产品推荐

