创建从 linq 到 SQL 查询输出的特定 json 响应?
Posted
技术标签:
【中文标题】创建从 linq 到 SQL 查询输出的特定 json 响应?【英文标题】:Create specific json response from linq to SQL query output? 【发布时间】:2021-10-16 10:22:03 【问题描述】:我正在开发 Web API。我正在从一个数据库表中获取数据:
DispatchData dta = new DispatchData();
using (SalesDataContext oSqlData4 = new SalesDataContext())
var result = (from x in oSqlData4.Finances
where (x.records.ID.Equals("12") ||
x.records.ID.Equals("123"))
where (x.Status == "Not Approved")
select x).ToList();
foreach (var item in result)
dta.data = new string[] item.Order_ID.ToString(), item.ID.ToString() ;
var json = JsonConvert.SerializeObject(dta);
return json;
public class DispatchData
public string[] data;
此代码只返回一条记录:
"data": ["2508", "4684"]
我希望数组中的每一行都像这样
"data":[ ["2508","4684"],["2223","1123"],....]
【问题讨论】:
问题出在这一行data.data = …
你总是分配给数组。您需要将其添加到数组中
【参考方案1】:
为什么不将result
作为List<DispatchData>
的强类型模型返回:
您的DispatchData
班级:
public class DispatchData
public string Order_ID get;set;
public string ID get;set;
您可以创建一个Root
类来处理您的JSON
:
public class Root
public List<DispatchData> data=new List<DispatchData>();
您可以像这样从查询中返回:
Root dta = new Root();
using (SalesDataContext oSqlData4 = new SalesDataContext())
dta.data = (from x in oSqlData4.Finances
where (x.records.ID.Equals("12") ||
x.records.ID.Equals("123"))
where (x.Status == "Not Approved")
select x).ToList();
var json = JsonConvert.SerializeObject(dta);
return json;
【讨论】:
【参考方案2】:对于你想要的结果,你的类定义错误
public class DispatchData
public string[][] data;
然后可以直接在一个数组中选择这对ID,然后嵌套在另一个数组中,直接赋值给dta.data
using (SalesDataContext oSqlData4 = new SalesDataContext())
var dta = new DispatchData()
data = (from x in oSqlData4.Finances
where (x.records.ID.Equals("12") ||
x.records.ID.Equals("123"))
where (x.Status == "Not Approved")
select new[] x.Order_ID.ToString(), item.ID.ToString()
).ToArray()
;
var json = JsonConvert.SerializeObject(dta);
return json;
【讨论】:
以上是关于创建从 linq 到 SQL 查询输出的特定 json 响应?的主要内容,如果未能解决你的问题,请参考以下文章