如何在LINQ中将数据整形为分组的项目

问题描述 投票:0回答:1

我具有来自数据库的以下结构:

[
    {
        "databaseId": 1,
        "databaseName": "Database1",
        "schemaName": "someschema",
        "schemaOwner": "dbo"
    },
    {
        "databaseId": 1,
        "databaseName": "Database1",
        "schemaName": "dbo",
        "schemaOwner": "dbo"
    },
    {
        "databaseId": 2,
        "databaseName": "Database2",
        "schemaName": "dbo",
        "schemaOwner": "dbo"
    }
]

我想将它们塑造成以下形状:

[
    {
        "databaseName": "Database1",
        "databaseId" 1,
        "schemas": [
            {
                "schemaName": "someschema",
                "schemaOwner": "dbo"
            },
            {
                "schemaName": "dbo",
                "schemaOwner": "dbo"
            }
        ]
    },
    {
        "databaseName": "Database2",
        "databaseId" 2,
        "schemas": [
            {
                "schemaName": "dbo",
                "schemaOwner": "dbo"
            }
        ]
    }
]

到目前为止,我已经尝试了以下方法:

      var schemasGrouped = schemas.GroupBy(s => s.DatabaseName)
      .Select(g => new {DatabaseName = g.Key, Schemas = g.ToList()})
      .ToList();

但是这没有给我我想要的,因为它没有在父文档中列出数据库ID,它也列出了子级中的所有属性,即使我只想要SchemaName和SchemaOwner。

c# linq
1个回答
1
投票

您可以尝试将元素选择器Func添加到GroupBy重载,以及在组键中使用两个字段

GroupBy
© www.soinside.com 2019 - 2024. All rights reserved.