如何对DataTable对象执行复杂的SQL查询
本文关键字:复杂 SQL 查询 执行 对象 DataTable | 更新日期: 2023-09-27 18:00:09
我正在C#中编程一个Excel外接程序,在这里我处理不同DataTable
对象中包含的数据。我想提供一个函数来对数据执行SQL查询,能够在where中引用其他表中的数据并按子句排序(例如,使用联接)。
这种查询的一个例子是
SELECT name
FROM Table1
WHERE id = Table2.id AND Table2.age > 18
这样做的问题是DataTable
不知道其他DataTable
的存在,所以(据我所知)类中没有这样的方法。此外,我不能使用类似LINQ的东西,因为查询将由excel中加载项的用户编写。
将数据复制到内存中的数据库,其中每个DataTable
都映射到一个表,这是一个好的解决方案吗?这将如何在性能方面发挥作用?有没有更简单的解决方案?
就SQL查询而言,在选择表时缺少表引用,更正后的查询看起来像
SELECT name
FROM Table1, Table2
WHERE Table1.id = Table2.id AND Table2.age > 18
如果Table2
中有相同的命名属性,则使用Table1.name
。但是,不建议在Joins中仅使用WHERE
条件而不指定联接属性来阅读此问题。使用JOIN
。
SELECT Table1.name
FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id WHERE Table2.age > 18