【问题标题】:DataTable does not contain a definition for 'AsEnumerable'DataTable 不包含“AsEnumerable”的定义
【发布时间】:2015-10-01 10:44:55
【问题描述】:

我有一个数据表 dt,我正试图将其转换为可观察的集合。 我已包含对 System.Data.DataSetExtensions 的引用。 我首先将 dt 转换为 DataView,以便对数据进行排序。然后我转换回表格。在我尝试转换为 IEnumerable 之后。当我这样做时,我收到错误:Error CS1929 'DataTable' does not contain a definition for 'AsEnumerable'

以下是我正在尝试的。我确信我在这里遗漏了一些基本的东西。再次,我仔细检查了参考资料。我什至已经删除并重新添加了引用,因为到目前为止我的搜索表明这是主要问题。

DataTable dt = GetData();
DataView dv = dt.DefaultView;
dv.Sort = "URLId desc"; //URLId is Column1
dt = dv.ToTable();
IEnumerable<MyClass> items = dt.AsEnumerable<MyClass>();  //Error occurs here
IList<MyClass> myItems = new ObservableCollection<MyClass>(items);

MyClass 是字符串和日期字段的简单集合。下面是该类的构造函数。

public MyClass(string urlId, string urlAddress, string displayName)
{
    URLId = urlId;
    CommonName = displayName;
    URLAddress = urlAddress;
    DateLastTouched = DateTime.Now;
    Preview = urlAddress;
    Publish = false;                          
}

【问题讨论】:

  • 你添加System.Data.DataSetExtensions了吗?
  • 我以为我在帖子中很清楚,但是是的,我添加了 System.Data.DataSetExtensions。 Daniel Kelley 引用的帖子表明问题是缺少对 System.Data、DataSetExtensions 的引用。这就是我在这里发帖的原因。 :)
  • 我不知道为什么我会投票。虽然我遇到了同样的错误,但我已经三次检查了对 System.Data.DataSetExtensions 的引用是否已添加。
  • 我已经回答了 - 见下文

标签: c# datatable observablecollection


【解决方案1】:

你正在使用

IEnumerable<MyClass> items = dt.AsEnumerable<MyClass>();

但我确定AsEnumerable 不是AsEnumerable&lt;T&gt;,因此你可以试试

var items = dt.AsEnumerable().Cast<MyClass>()

编辑 (上面返回EnumerableRowCollection&lt;string&gt; 所以你甚至可以这样做

dt.AsEnumerable().Cast<MyClass>().AsEnumerable();

获取IEnumerable&lt;MyClass&gt;)

【讨论】:

    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多