簡體   English   中英

如何使用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 在評論中猜測的那樣

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM