【发布时间】:2015-06-27 14:34:29
【问题描述】:
我正在用 C# 编写一个 Excel 插件,我在其中处理包含在不同 DataTable 对象中的数据。我想提供一个函数来对数据执行 SQL 查询,能够在 where 中引用其他表中的数据并按子句排序(例如,使用连接)。
这样的查询的一个例子是
SELECT name
FROM Table1
WHERE id = Table2.id AND Table2.age > 18
这个问题是DataTable 不知道另一个DataTables 的存在,所以(到目前为止我知道)类中没有这样的方法。另外,我不能使用 LINQ 之类的东西,因为查询将由加载项的用户在 excel 中编写。
将数据复制到内存数据库是否是一个好的解决方案,其中每个DataTable 都映射到一个表?这将如何在性能方面发挥作用?有没有更简单的解决方案?
【问题讨论】:
-
SQL 查询总是返回一个平面表,因此永远不会存在其他表。要么您需要在 SQL 查询中使用连接来组合表,要么您已经执行的查询有一个公共字段,您可以使用 Linq 来连接。
标签: c# sql excel datatable in-memory-database