c# - 无效的匿名类型成员声明符 c# linq?

标签 c# json linq

我有这个 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/

相关文章:

python - 操作json文件python

c# - DateTime.now 从数据库中减去值

c# - 读取字节数组中的多个文件

json - 无法使用SwiftyJSON访问JSON数据

javascript - 尝试在 https ://api. thetvdb.com/向 TVDB REST API 发出 JSON POST 请求,但收到 CORS 错误

C# 跳过第一行但希望它跳过最后一行

c# - 非重复计数 x 和按日期 y 分组

c# - LINQ to Entities 不支持 Entity Framework 'ArrayIndex'

c# - 按性别统计人数

c# - ASP.NET FormView : "Object of type ' System. Int3 2' cannot be converted to type ' System.String"