如何使用 LINQ Group Records 和使用 Distinct
How to use LINQ Group Records and use Distinct
鉴于此记录
class Record
{
DateTime Date {get; set;}
string Article {get; set;}
string Platform { get; set;}
string Amount { get; set;}
}
通过 sql 查询,我得到了一个记录列表,并希望按文章对平台进行分组。
我做这个查询:
List<Record> recordList = FetchRecords();
var group = recordList.GroupBy(
f => f.Article,
(key, g) => new
{
Article= key,
Platforms = g.Select(p => p.Platform).ToList()
});
大约有 120 种不同的文章和大约 30 个不同的平台,因此组中的预期物品数量约为 120,但我收到了数千件物品。记录列表中的项目很多,因为它是过去 30 天内所有文章的库存,所以我想获得一个独特的文章列表。我只是想不出在哪里做这个。我错过了什么?
编辑:
在运行时进一步检查数据后,我发现我的数据倒退了。文章已经正确分组,平台是需要区分的平台,就像 Astrid E 在评论中猜测的那样
也许你可以尝试这样的事情:
var group = recordList.GroupBy(r => r.Article)
.Select(a =>
new
{
Article = a.Key,
Platforms = a.GroupBy(g => g.Platform)
});
您可以 return Platform
集合的不同值,方法是使用 Enumerable.Distinct()
。
.GroupBy()
操作中结果选择器中的 Platforms
值应按如下方式计算:
Platforms = g.Select(p => p.Platform).Distinct().ToList()
鉴于此记录
class Record
{
DateTime Date {get; set;}
string Article {get; set;}
string Platform { get; set;}
string Amount { get; set;}
}
通过 sql 查询,我得到了一个记录列表,并希望按文章对平台进行分组。
我做这个查询:
List<Record> recordList = FetchRecords();
var group = recordList.GroupBy(
f => f.Article,
(key, g) => new
{
Article= key,
Platforms = g.Select(p => p.Platform).ToList()
});
大约有 120 种不同的文章和大约 30 个不同的平台,因此组中的预期物品数量约为 120,但我收到了数千件物品。记录列表中的项目很多,因为它是过去 30 天内所有文章的库存,所以我想获得一个独特的文章列表。我只是想不出在哪里做这个。我错过了什么?
编辑:
在运行时进一步检查数据后,我发现我的数据倒退了。文章已经正确分组,平台是需要区分的平台,就像 Astrid E 在评论中猜测的那样
也许你可以尝试这样的事情:
var group = recordList.GroupBy(r => r.Article)
.Select(a =>
new
{
Article = a.Key,
Platforms = a.GroupBy(g => g.Platform)
});
您可以 return Platform
集合的不同值,方法是使用 Enumerable.Distinct()
。
.GroupBy()
操作中结果选择器中的 Platforms
值应按如下方式计算:
Platforms = g.Select(p => p.Platform).Distinct().ToList()