从多个SQL查询填充对象

凯文·罗宾逊

我只是在寻找一些指示,以使我走上正确的道路。我有2个SQL查询,一个返回客户列表,一个返回客户已完成的订单列表。在C#中工作,我如何填充一个可以序列化为json的类。

我尝试了多种不同的方式,现在这是我上课时最接近的方式...

public class jsonOrder
    {     
        public string order_no { get; set; }
        public string customer { get; set; }
        public List<orderitem> items { get; set; }
        public decimal grandtotal { get; set; }
        public jsonOrder()
        {
            this.items = new List<orderitem>();
        }        
    }

    public class orderitem
    {
        public string itemcode{ get; set; }
        public int quantity { get; set; }
        public decimal amount { get; set; }
    }

使用这个我可以让我的json看起来像这样...

[
    {
        "order_no": "12345",
        "customer": "12",
        "items": [],
        "grand_total": 6.0000,
    }
    {
        ...another order...
    }
]

如何获得要在订单中列出时间的项目?

例如

{
        "order_no": "12345",
        "customer": "12",
        "items": [
                      {"itemcode":"a","quantity":1,"amount":12.34}
                      {"itemcode":"b","quantity":2,"amount":6.12}
                 ],
        "grand_total": 24.5800
}

目前我的代码是

List<readOrder> orderhistory = new List<Models.readOrder>(ordHead.Rows.Count);
            if (ordHead.Rows.Count > 0)
            {
                foreach (DataRow orders in ordHead.Rows)
                {
                    orderhistory.Add(new readOrder(orders));
                }
            }

但这只会带回标头详细信息。

我目前可以从以下数据库中获取SQL,但是我可以灵活选择...

_con = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
            
// Get all orders
   DataTable ordHead = new DataTable();
   var queryHead = "Select * from ORDERHEADER where customer = " + customer;
   _Header_adapt = new SqlDataAdapter
            {
                SelectCommand = new SqlCommand(queryHead,_con)
            };
            _Header_adapt.Fill(ordHead);

//Get items within orders
            DataTable ordDetail = new DataTable();
            var queryDetail = "Select * from ORDERHISTORY where customer = " + customer;
            _adapt = new SqlDataAdapter
            {
                SelectCommand = new SqlCommand(queryDetail, _con)
            };
            _adapt.Fill(ordDetail);
    ```
凯文·罗宾逊

我已经设法解决了...我的更正代码如下。感谢那些为我指明方向的人...

public HttpResponseMessage Get(string customer_urn)
        {
            _con = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
            
            string queryString = "Select * from ORDERHEADER where customer = " + customer;

            DataSet ordetails = new DataSet();
            DataSet ordetailssub = new DataSet();
            var q_Head = "Select * from ORDERHEADER where customer = " + customer;
            _Header_adapt = new SqlDataAdapter
            {
                SelectCommand = new SqlCommand(q_Head, _con)
            };
            _Header_adapt.Fill(ordetails,"ORDERHEADER");
            
            var q_Detail = "Select * from ORDERDETAIL where customer = " + customer;
            SqlDataAdapter _Det_adapt = new SqlDataAdapter
            {
                SelectCommand = new SqlCommand(q_Detail, _con)
            };
            _Det_adapt.Fill(ordetails, "ORDERDETAIL");

            DataRelation ordRel = ordetails.Relations.Add("x",
                ordetails.Tables["ORDERHEADER"].Columns["Order"],
                ordetails.Tables["ORDERDETAIL"].Columns["Order"]);

            SqlDataAdapter custAdapter = 
                new SqlDataAdapter("Select * from ORDERHEADER where customer = " + customer, _con);
            SqlDataAdapter ordAdapter = new SqlDataAdapter("Select * from ORDERDETAIL where customer = " + customer, _con);

            DataSet customerOrders = new DataSet();

            var jsonorderlist = new List<jsonOrder>();
            var oh3 = new jsonOrder() { };
            foreach (DataRow pRow in ordetails.Tables["ORDERHEADER"].Rows)
            {
                var ord = new jsonOrder()
                {
                    order_id = pRow["order"].ToString(),
                    customer_urn = pRow["Customer"].ToString(),
                    total = Convert.ToDecimal(pRow["total"]),
                };
                int key1 = 0;
                foreach (DataRow cRow in pRow.GetChildRows(ordRel))
                {
                    key1 = key1 + 1;
                    ord.itemsordered.Add(key1.ToString(), new jsonOrder.orderitem
                    {
                        prod = cRow["prod"].ToString(),
                        qty = Convert.ToInt32(cRow["qty"]),
                        total_amount = Convert.ToDecimal(cRow["total_amount"])
                    });
                }
                jsonorderlist.Add(ord);
 
            }

            return Request.CreateResponse(HttpStatusCode.OK, jsonorderlist);
        }

    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多个 sql 查询来填充 html 表

来自分类Dev

用来自多个 mysql 查询的数据填充对象数组

来自分类Dev

SQL查询聚合多个查询

来自分类Dev

使用多个查询填充GridView的列

来自分类Dev

SQL查询多个多值

来自分类Dev

SQL查询多个条件

来自分类Dev

SQL查询,多个选择

来自分类Dev

查询多个SQL表

来自分类Dev

Rethinkdb:从查询返回多个对象

来自分类Dev

MongoDB查询多个对象数组

来自分类Dev

在LINQ查询内部填充对象数组

来自分类Dev

在LINQ查询内部填充对象数组

来自分类Dev

从多个数据集中填充类对象

来自分类Dev

用Java中的多个变量填充对象?

来自分类Dev

如何将用包含HTML内容的SQL查询数据填充的XML文档对象输出到ColdFusion中的XML文件?

来自分类Dev

通过SQL查询填充虚拟字段

来自分类Dev

SQL查询填充和更新表

来自分类Dev

VB:用单个SQL查询填充datagridview

来自分类Dev

使用已运行的Sql查询填充TextBox

来自分类Dev

使用 SQL 查询填充 WTForms SelectField

来自分类Dev

SQL查询<>甚至填充空白行

来自分类Dev

SQL或语句与多个选择查询

来自分类Dev

基于多个条件的SQL查询

来自分类Dev

SQL查询联接多个表

来自分类Dev

SQL查询-多个内部联接

来自分类Dev

SQL Server:多个选择查询

来自分类Dev

SQL查询多个选择语句

来自分类Dev

在SQL查询中避免多个“或”

来自分类Dev

SQL查询多个where子句