Tengo una biblioteca de cuadrícula de JavaScript (crea una tabla en la página) que acepta una matriz de JavaScript como entrada, para representar en la cuadrícula. Sin embargo, no estoy seguro de cómo convertir una consulta de Linq a SQL (contra una base de datos de SQL Server) en una matriz de JavaScript que contiene solo valores.
Intenté esto, pero incluía los nombres de las columnas de la tabla en la clave JSON (y no quiero JSON de todos modos, quiero una matriz de cadenas de JavaScript, a menos que esto se pueda convertir en una matriz):
JsonConvert.SerializeObject(query)Ejemplo del formato que necesito producir:
[1,2,3],[4,5,6]Entorno: .NET Core 3.1
editar: aquí hay una muestra de lo que tengo actualmente, esto devuelve el JSON menos que deseable (debido a que los resultados de la consulta son tan grandes, tener una clave JSON para cada elemento literalmente duplicará el tamaño de la consulta):
Tabla de dispositivos
ID Name 1 iPhone7 2 iPhone8 3 iPhone9Matriz necesaria (Nota: sin nombres de columna)
[1, "iPhone7"],[2, "iPhone8"],[3, "iPhone9"]Código C# actual en el método del controlador (devuelve una clave no deseada para cada elemento actualmente)
var query = db.Devices; var formattedResult = JsonConvert.SerializeObject(query); return Ok(formattedResult);Técnicamente, podrías hacer esto:
var query = db.Devices.AsEnumerable() .Select(d => new object[]{d.ID, d.Name}); var formattedResult = JsonConvert.SerializeObject(query); return Ok(formattedResult);Pero luego el código en el otro extremo de su solicitud tendrá que traducir todas esas matrices nuevamente en objetos.
Rara vez vale la pena complicar su modelo de esta manera para optimizar el tamaño del tráfico de su red. Si está extrayendo suficientes elementos a través del cable para que esto sea un problema de rendimiento, es probable que encuentre una variedad de otros problemas de rendimiento. Primero consideraría otras opciones, como implementar la paginación.
Has probado
var query = db.Devices.ToList(); var array = JArray.FromObject(query); return Ok(formattedResult)