我在C#中编写Excel加载项,我处理不同DataTable
对象中包含的数据。我想提供一个函数来对数据执行SQL查询,并能够从where和sort by子句中引用其他表中的数据(例如,使用连接)。
此类查询的一个示例是
SELECT name
FROM Table1
WHERE id = Table2.id AND Table2.age > 18
问题在于DataTable
不知道其他DataTable
的存在,所以(至今我知道)在课堂上没有这样的方法。另外,我不能使用像LINQ这样的东西,因为查询将由excel中加载项的用户编写。
将数据复制到内存数据库是否是一个很好的解决方案,其中每个DataTable
都映射到一个表?这将如何在性能方面发挥作用?有更简单的解决方案吗?
答案 0 :(得分:0)
就SQL查询而言,在选择表时缺少表引用,更正后的查询将如下所示
SELECT name
FROM Table1, Table2
WHERE Table1.id = Table2.id AND Table2.age > 18
如果Table1.name
中有相同的命名属性,请使用Table2
。
但是,建议不要在连接中仅使用WHERE
条件而不指定连接属性read this question。使用JOIN
。
SELECT Table1.name
FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id WHERE Table2.age > 18