如何将 linq 查询转换为仅包含值的 JavaScript 数组?

How can a linq query be converted to JavaScript array containing only values?

我有一个 JavaScript 网格库(它在页面上创建了一个 table),它接受一个 JavaScript 数组作为输入,用于在网格中呈现。但是,我不确定如何将 Linq-to-SQL 查询(针对 SQL 服务器数据库)转换为仅包含值的 JavaScript 数组。

我试过了,但它在 JSON 键中包含了 table 列名称(而且我不想要 JSON,我想要一个 JavaScript字符串数组,除非这可以转换为数组?):

JsonConvert.SerializeObject(query)

我需要生成的格式示例:

[1,2,3],[4,5,6]

环境:.NET Core 3.1

编辑:这是我目前得到的样本,这个 returns 不太理想 JSON (由于查询结果太大, JSON key for very element is going to double size of the query):

设备Table

ID   Name
1    iPhone7
2    iPhone8
3    iPhone9

需要数组(注意:没有列名)

[1, "iPhone7"],[2, "iPhone8"],[3, "iPhone9"]

控制器方法中的当前 C# 代码(returns 当前每个元素都不需要键)

var query = db.Devices;
var formattedResult = JsonConvert.SerializeObject(query);
return Ok(formattedResult);

你尝试了吗

var query = db.Devices.ToList(); 
var array = JArray.FromObject(query);
return Ok(formattedResult)

从技术上讲,您可以这样做:

var query = db.Devices.AsEnumerable()
    .Select(d => new object[]{d.ID, d.Name});
var formattedResult = JsonConvert.SerializeObject(query);
return Ok(formattedResult);

但是您请求另一端的代码将不得不将所有这些数组转换回对象。

为了优化网络流量的大小而将您的模型复杂化的做法极不值得。如果您通过网络拉取足够多的项目以使其成为性能问题,您可能会遇到各种其他性能问题。我会先考虑其他选择,比如实现分页。