如何在c#查询中连接用户定义的数据表和sql表

本文关键字:定义 数据表 sql 用户 连接 查询 | 更新日期: 2023-09-27 18:10:50

我有一个网格视图,向用户显示他或她在我的网站上购买的所有篮子。我的网格在每一行都有复选框,用户可以选择几个篮子来打印它们(打印其中的项目)。当用户选中复选框并单击按钮打印它们时,我的代码检查网格视图中的所有行,并将篮ID保存在列表中,并将其保存在会话中作为列表,并在打印页面中使用它。但我的问题在这里:在print Page中,我定义了一个带有一列的DataTable,并用篮ID填充它。但是我不知道如何连接我的select查询和这个数据表
这是我的查询:

sqlQuery="SELECT sale.basketid as id ,sale.discount,ss.LBL as RowNo,sale.ColumnNo,Sale.ID as serial,Sale.Qty "
                   + "  FROM Sale INNER JOIN SansDate ON Sale.SID = SansDate.SID AND Sale.SansNumber = SansDate.SansNumber"
               + "  INNER JOIN Sect ON Sale.SID = Sect.SID INNER JOIN Saloon ON Sect.SaloonID = Saloon.SaloonID left outer join saloonstructure ss on ss.saloonid=saloon.saloonid and ss.rownum=sale.rowno "
              + "where sale.basketid=" + hash.decode(Request.QueryString["param"].ToString()));    

,这是我的数据表:

List<string> arraybasket = (List<string>)Session["basketArray"];
            DataTable dt = new DataTable();
            dt.Columns.Add("bid");
            DataRow r = dt.NewRow();
            for (int i = 0; i < arraybasket.Count; i++)
            {
                r["bid"] = arraybasket[i];
                dt.Rows.Add(r);
            }    

在where子句中,我只想显示在我的数据表中具有这些Basket ID的项目(dt)

如何在c#查询中连接用户定义的数据表和sql表

在where子句中,我只想显示在我的数据表中具有这些Basket ID的项目(dt)

可以使用SQL的IN运算符。

不需要创建数据表来从List<string>获取字符串。用string.Join直接从List<string>得到basketid;

List<string> arraybasket = (List<string>)Session["basketArray"];
sqlQuery=@"SELECT 
                 sale.basketid as id ,
                 sale.discount,
                 ss.LBL as RowNo,
                 sale.ColumnNo,
                 Sale.ID as serial,
                 Sale.Qty 
           FROM Sale 
           INNER JOIN SansDate ON Sale.SID = SansDate.SID AND Sale.SansNumber = SansDate.SansNumber
           INNER JOIN Sect ON Sale.SID = Sect.SID 
           INNER JOIN Saloon ON Sect.SaloonID = Saloon.SaloonID 
           LEFT OUTER JOIN saloonstructure ss on ss.saloonid=saloon.saloonid AND ss.rownum=sale.rowno 
           WHERE sale.basketid in (" + string.Join(",", arraybasket) + ");";