[英]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 在評論中猜測的那樣
您可以使用Enumerable.Distinct()
返回Platform
集合的不同值。
.GroupBy()
操作中結果選擇器中的Platforms
值應按如下方式計算:
Platforms = g.Select(p => p.Platform).Distinct().ToList()
也許你可以嘗試這樣的事情:
var group = recordList.GroupBy(r => r.Article)
.Select(a =>
new
{
Article = a.Key,
Platforms = a.GroupBy(g => g.Platform)
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.