假如我用这样的SQL命令填充DataTable
:
SQLCmd.Parameters.AddWithValue("@Date",DateTime.Today());
SQLCmd.CommandText = @"select ID, Name, Date from TestTable1 where Date=@Date";
SqlDataAdapter SQLAdapter = new SqlDataAdapter(SQLCmd);
DataTable dt = new DataTable();
SQLAdapter.Fill(dt);
有可能在dt
的另一个表中寻找进一步的查询吗?
例如,做类似的事情
select ID
from TestTable2
where TestTable2.ID = dt["ID"];
这样的东西......假设TestTable1
和TestTable2
都有一个列ID
。
谢谢你的帮助!
您可以使用linkserver一次获取数据,否则代码可能会帮助您解决问题。获取所有带有“,”的ID,并将其传递给第二个查询。
string ids = String.Join(",", dt.AsEnumerable().Select(x => x.Field<int>("ID").ToString()).ToArray());
SQLCmd.Parameters.AddWithValue("@ID",ids);
SQLCmd.CommandText = @"select ID from TestTable2 where ID in ("+@ID+")";
SqlDataAdapter SQLAdapter = new SqlDataAdapter(SQLCmd);
DataTable dt2 = new DataTable();
SQLAdapter.Fill(dt2);
作为思考的另一种选择,你可以像JOIN
TestTable2一样:
SELECT t1.[ID]
,t1.[Name]
,t1.[DATE]
,t2.[ID]
FROM TestTable1 t1
INNER JOIN TestTable2 t2 ON t1.ID = t2.ID
WHERE t1.[DATE] = @Date
您可以使用DataView进行过滤
DataView dv = new DataView(dt);
dv.RowFilter = "query"; // query example = "DATE = 'Your Date'"