如何在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)
在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) + ");";