DataTable不包含' AsEnumerable'

时间:2015-10-01 10:44:56

标签: c# datatable observablecollection

我有一个DataTable,dt,我试图转换为可观察的集合。 我已经包含对System.Data.DataSetExtensions的引用。 我首先将dt转换为DataView,以便我可以对数据进行排序。然后我转换回一张桌子。我尝试转换为IEnumerable后。当我这样做时,我收到错误:错误CS1929' DataTable'不包含' 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;                          
}

1 个答案:

答案 0 :(得分:1)

您正在使用

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

但我确定AsEnumerable不是AsEnumerable<T>,因此可以尝试

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

修改 (上面返回EnumerableRowCollection<string>所以你甚至可以

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

获得IEnumerable<MyClass>