Visual C#,来自现有DataTable的SQL查询?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual C#,来自现有DataTable的SQL查询?相关的知识,希望对你有一定的参考价值。

假如我用这样的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"];

这样的东西......假设TestTable1TestTable2都有一个列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'"

以上是关于Visual C#,来自现有DataTable的SQL查询?的主要内容,如果未能解决你的问题,请参考以下文章

为现有 DataTable 初始化 tableTools

C# 如何调整DataTable的大小?有人说调属性,但是MicroSoft Visual 2010 C# 没有DataTable控件。

C# 将 DataTable 绑定到现有 DataGridView 列定义

如何做:C#写的C/S程序,DataGridView中要添加一列下拉选框,下拉选框的内容由DataTable的一列绑定.

c:when 和 c:if 带有来自 h:dataTable var [重复] 的动态参数

Visual Studio 2017 无法打开现有文件