我具有来自数据库的以下结构:
[
{
"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。
您可以尝试将元素选择器Func
添加到GroupBy
重载,以及在组键中使用两个字段
GroupBy