我如何将以下语句转回List<DocumentData>
IEnumerable<IGrouping<string, DocumentData>> documents =
documentCollection.Select(d => d).GroupBy(g => g.FileName);
目标是获取应小于documentCollection的List。
FileName包含重复项,因此我想确保没有重复的名称。
我也尝试了以下方法,但仍为我提供了重复的文件名
documentCollection =
documentCollection.GroupBy(g => g.FileName).SelectMany(d => d).ToList();
最佳答案
每个IGrouping<string, DocumentData>
都是一个IEnumerable<DocumentData>
,因此您可以简单地调用SelectMany
来展平序列:
var list = documents.SelectMany(d => d).ToList();
编辑:对于更新的问题,似乎OP希望为任何给定的文件名仅选择第一个文档。这可以通过在每个
First()
实例上调用IGrouping<string, DocumentData>
来实现:IEnumerable<DocumentData> documents =
documentCollection.GroupBy(g => g.FileName, StringComparer.OrdinalIgnoreCase)
.Select(g => g.First())
.ToList();
关于c# - Linq IEnumerable <IGrouping <字符串,类>>返回到列表<类>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21010424/