繁体   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