【问题标题】:c# using DataTable AsEnumerable() on .NET 2c# 在 .NET 2 上使用 DataTable AsEnumerable()
【发布时间】:2011-03-01 09:56:03
【问题描述】:

我正在尝试在 .net 2 winforms 应用程序上运行以下代码:

DataTable dt = this.GetData(null, null, true, sql);

DateTime minDate = (from f in dt.AsEnumerable()
               select f.Field<DateTime>("Timestamp")).Min();

“使用 system.linq”和“.AsEnumerable()”出现错误。有什么办法可以解决这个问题以使用 AsEnumerable()?还是我应该放弃这种方法?

谢谢!

【问题讨论】:

    标签: c# linq .net-2.0 datatable asenumerable


    【解决方案1】:

    .NET 2 没有 LINQ。您可以使用LINQBridge,它可能包括也可能不包括DataTableAsEnumerable() 扩展方法。如果是这样,您可以改用Cast&lt;DataRow&gt;(),可选地通过显式类型的范围变量:

    DateTime minDate = (from DataRow f in dt.AsEnumerable()
                        select f.Field<DateTime>("Timestamp")).Min();
    

    然后您需要DataRow 上的Field&lt;T&gt; 扩展方法。不过,如果它不是 LINQBridge 的一部分,您也可以自己编写。

    只是说清楚 - 如果您还使用 Visual Studio 2005,这没有会很好地工作,因为您需要 lambda 表达式、扩展方法等的 C# 3 功能。

    是否有可能升级到 .NET 3.5?这会让生活变得更轻松......

    【讨论】:

      【解决方案2】:

      LINQ 是在 .NET 3.5 中引入的,所以恐怕你在这里不走运:(

      【讨论】:

      • 是的,我知道这一点,但我认为可能会有一些希望! :)
      • @Funky - 我想你唯一的希望是 Skeet 先生建议的 LINQBridge。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      相关资源
      最近更新 更多