首页 > 解决方案 > 创建从 linq 到 SQL 查询输出的特定 json 响应?

问题描述

我正在研究 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"],....] }

     

标签: c#jsonlistwebapi

解决方案


对于您想要的结果,您的类定义错误

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;
}

推荐阅读