在没有RDBMS的情况下在.Net中的数据表或类似数据库上运行SQL查询
问题描述:
我想拥有一个或多个数据表,并且能够在它们上运行SQL语句,而无需使用任何外部RDBMS。在没有RDBMS的情况下在.Net中的数据表或类似数据库上运行SQL查询
例如,取一个数据集中的2个数据表,并直接将它们与SQL语句和Where子句结合起来,结果是一个新的数据表?例如,如果我有2个数据表,命名为人民和地址的数据集(我建立使用代码,而不是从数据库中获取..原谅老式加入语法):
dim dtJoined as DataTable = MyDataSet.RunSQLQuery ("Select * from People, Orders Where People.PersonID=Orders.OrdereID")
感谢
答
你因为它不是一个RDBMS,但你可能会使用标准的LINQ获得你想要完成的任务。
答
你可以写出来,以一个临时的CSV文件,然后使用OLEDB
string strCSVConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ fileDirectory + ";Extended Properties='text;HDR=YES;'";
OleDbDataAdapter oleda = new OleDbDataAdapter(sql, strCSVConnString);
DataTable dataTable = new DataTable();
oleda.Fill(dataTable);
阅读
在这种情况下,sql可以是
SELECT * FROM fileName WHERE col = value
等我们已经有了相当数量的成功与此。
+0
太棒了!我终于得到了一个真正的答案。然而,我不得不承认,我一直将所有东西都存储在轻量级类或结构集合中 - 通常只使用公共成员变量 - 并使用LINQ甚至加入多个列表并且必须推荐它。有缺点 - 学习曲线最大,第二大是你不能编辑和继续(我有2008) - 但现在我知道它,并沉迷于回归。注意:在.Net中有一些TON是为了支持这个而添加的! Lambdas,扩展方法等 – FastAl 2013-01-07 15:40:30
这将是很高兴成为
懒惰高效,而不必学习新的查询语言的所有细节,但我想LINQ并没有那么糟糕。 – FastAl 2010-06-14 19:27:22一旦你开始使用它,你可能会发现它在许多方面比SQL更好。最终,您可能想要完全抛弃数据集方法,并使用LINQ通过LINQ to SQL/Entity Framework/NHibernate等查询强类型集合或甚至数据库。 – 2013-01-07 08:37:05