如何在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 
Interesting Posts