如何在DataTable对象上执行复杂的SQL查询?
我在C#中编写一个Excel加载项,用于处理包含在不同DataTable
对象中的DataTable
。 我想提供一个函数来执行对数据的SQL查询,并且能够引用来自where和sort by子句(例如,使用join)的其他表的数据。
这样的查询的一个例子是
SELECT name FROM Table1 WHERE id = Table2.id AND Table2.age > 18
这个问题是DataTable
不知道其他DataTable
的存在,所以(到目前为止我知道)在类中没有这样的方法。 另外,我不能使用类似于LINQ的东西,因为查询将由Excel中加载项的用户编写。
将数据复制到内存中的数据库,将每个DataTable
映射到一个表是否是一个很好的解决scheme? 这将如何工作performance明智? 有一个更简单的解决scheme?
在SQL查询方面,您在select表格时缺less表格参考,更正的查询将如下所示
SELECT name FROM Table1, Table2 WHERE Table1.id = Table2.id AND Table2.age > 18
如果Table2
有相同的命名属性,请使用Table1.name
。 但是,在连接中只使用WHERE
条件而不指定join属性不build议阅读此问题 。 使用JOIN
。
SELECT Table1.name FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id WHERE Table2.age > 18