簡體   English   中英

如何在C#中使用LINQ轉換嵌套的key:value格式的C#對象列表?

[英]How to convert a C# list of objects in a nested key:value format using LINQ in C#?

我正在構建.NET Core Web API,並且必須從數據庫中結構異常的單個表中查詢大量數據。 我想先將數據轉換為更具可讀性的格式,然后再將其發送回前端客戶端。

我嘗試使用GroupBy,但是即使數據已正確“分離”,我也無法實現所需的格式:對象中沒有節點,也沒有邏輯上的分離/嵌套。

var byDayGrouped = context.Lavori
                .Where(x => x.datetime != null)
                .GroupBy(row => new
                {
                    row.datetime.Year,
                    row.datetime.Month,
                    row.datetime.Day,
                    row.datetime.WorkerName
                })
                .ToList();

這是我正在尋找的格式:

data: {
    '01.01.2019': [
        workerName: [
            work1: {
                ...
            },
            ...
        ],
        ...
    ]
    '02.01.2019': [
        ...
    ]
}

這是我得到的:

[
    [
        {
            ...
        },
        ...
    ]
]

您正在尋找字典,因為字典將被序列化為JSON對象,其中每個字典的鍵將成為該對象的屬性。

字典的鍵可以是您想要的任何類型,在這種情況下,您需要一個字符串作為字典的鍵,作為值,您將使用IEnumerable<T> ,其中T是Lavori對象的任何類型。

我不確定您編寫的GroupBy是否按需要分組,因為您也按workerName分組。

假設您只想要沒有時間部分的日期(這是我認為的,因為您按YearMonthDay分組),那么以下內容將為您工作:


//Using .Date will remove the time part from a DateTime
var dictionary = Lavori.GroupBy(l => l.datetime.Date)
     .ToDictionary(l => l.Key.ToString("dd.MM.yyyy"), l => l);

使用此小提琴來嘗試解決方案: https : //dotnetfiddle.net/rPNRvC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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