我有这个 json 结构:
[
{
"code": "T01",
"stock": 0
},
{
"code": "T02",
"stock": 1
}
]
我怎样才能实现他的结构:
[{
T01: {
stock: 0
}
}, {
T02: {
stock: 1
}
}]
在 C# 中使用 linq。
目前我有这行代码:
var inv = inventory.Select(i => new { code = i.SiteCode, stock = i.Stock).ToList().ToArray();
inv的值会得到第一个结构结果。
我正在尝试做这样的事情:
inv = inventory.Select(i => new { i.SiteCode = new { stock = i.Stock} }).ToList().ToArray();
我收到以下编译错误:
Error 1 Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.
有什么帮助吗?
最佳答案
您不能像使用 linq 那样动态创建属性名称。您必须提供一个特定的名称。如果您想实现的目标与您描述的一样,那么最好将其转换为字典。像这样:
var inv = inventory.ToDictionary(key => key.SiteCode, value => new { Stock = value.Stock});
如果您可能有重复的 SiteCode
,那么对于 value
,您可以使用集合或以其他方式使用 ToLookup
。
关于 ToArray
/ToList
的用法 - 大多数 linq 方法的执行方式不同,更像是关于做什么(查询)的指令。添加类似 ToList
/ToArray
/FirstOrDefault
/Sum
... 的方法时 - 仅在此时查询实际执行并返回结果。在上面的例子中,您使用 .ToList().ToArray()
- 执行 linq 并为 List
返回,然后将其转换为数组。根据你想要的输出只使用两者之一(或者按照我上面的建议转换为字典或查找
关于c# - 无效的匿名类型成员声明符 c# linq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39702384/