【问题标题】:How to convert a linq array to string array for json如何将 linq 数组转换为 json 的字符串数组
【发布时间】:2026-01-06 00:50:01
【问题描述】:

我在VB.NET中有这个功能

Dim dt = (From d In db.d ...).ToArray()

Return New With {
    .label = "label",
    .data = dt.ToArray()
}

以 JSON 格式返回以下数据

{
    "label":"label",
    "data":[
        {"date":1366657400000,"value":12051},
        {"date":1366657397000,"value":12102},
        {"date":1366646820000,"value":12099}
    ]
}

我怎样才能以以下格式返回数据

{
    "label":"label",
    "data":[
        [1366657400000,12051],
        [1366657397000,12102],
        [1366646820000,12099]
    ]
}

【问题讨论】:

  • 您确定要这样做吗?原始的 JSON 对我来说更好看。
  • @svick 我同意,但我需要这样做才能让 Flot 插件正常工作!

标签: vb.net json linq


【解决方案1】:

我对 VB 不是很熟悉,但它应该是这样的:

Return New With { _
    .label = "label", _
    .data = data.[Select](Function(d) New Long() { d.date, d.value} ).ToArray() _
}

这个想法是您想为原始集合中的每个项目创建一个新数组。新数组中的第一项是date 属性,第二项是value 属性。

这就是它在 C# 中的样子:

return Json(new {
    label = "label",
    data = data.Select(d => new[] { d.date, d.value }).ToArray()
});

【讨论】:

  • 对不起,这不能编译。我尝试 Return New() With { .label = "label", .data = data.ToArray() } 但它给了我一个语法错误 'Type expected'
  • 我知道如何用 c# 编写它,我在这里找到了类似的答案,但我不知道如何将 d => new[] 转换为 VB。语法 New() With 无法编译。
  • new string() 代替 new[],开始 - 假设它是一个字符串数组。
  • @Elio - 对不起......正如我所说,我不太了解 VB。但方法是正确的:从原始数据集合中的每个项目创建一个新数组。这样,一个数组数组就被序列化了,你应该得到你想要的输出。
  • @Elio - 我修复了 VB 示例。它现在可以编译并为我工作。