【问题标题】:How to query DataTable and DataSet directly?如何直接查询DataTable和DataSet?
【发布时间】:2014-06-26 13:51:42
【问题描述】:

有没有办法直接在 dataset 或 datatable 上执行 SQL 查询。需要执行的查询非常复杂,使用 Linq 可能难以实现。

有没有类似的方法可以直接从数据集或者数据表中查询?

是否有任何工具可用于将复杂查询转换为 linq ?

【问题讨论】:

  • 你的第二个问题:试试 Linqer:sqltolinq.com
  • 关于您的第一个问题:在您的链接中,查询了北风数据库,但您的主题状态数据集?我们是在谈论 linq-to-sql 还是 linq-to-dataset ?
  • @Serv 更正了这个问题,我说的是从数据集或数据表中查询,而不是从数据库中查询。
  • SQL 查询不由 .NET 处理 - 它们由 SQL Server 等 SQL 引擎处理。您可以启动像 LocalDB 这样的低开销 SQL 实例,将数据转储到其中,然后对其进行查询。
  • 如果您在数据集中有数据,则您已经处理了数据并从数据库中获取了数据。那么:为什么要查询数据集而不是改进对数据库的查询呢?

标签: c# sql .net visual-studio-2010


【解决方案1】:

有一个 DataTable.Select() 方法,它返回符合特定条件的行。

但是,语法有点受限。示例:

DataTable.Select("Date > #1/1/2014# AND Name = \"John\"");

应选择“日期”列的日期值为 2014 年 1 月 1 日或更晚且“名称”列为“John”的任何行。使用 String.Format() 也很方便。

DataTable.Select(String.Format("Date > {0} AND Name = {1}", date, name));

不过,与在实际查询中修复它相比,这是非常有限的。

【讨论】:

    【解决方案2】:

    尝试使用 LinqPad 之类的工具或类似的东西
    Download LinqPad
    另一种方法是将数据库中的复杂查询创建为 VIEW,然后从 VIEW 中编写一个简单的选择!
    另一种方法是,使用 MethodChain
    What is the correct way to chain methods in .Net

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 2014-07-24
      • 2011-03-13
      • 2010-09-05
      • 2011-09-13
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      相关资源
      最近更新 更多