Convert Dataset to IQueryable<T> or IEnumerable<T>

旧街凉风 提交于 2019-12-04 09:19:36

问题


Since there is no Linq to DB2 yet (c'mon IBM!), and I want to deal with IQueryables or IEnumerables in my code, how would I convert a DataTable to an IQueryable? Or an IEnumerable?

I have an interface and a class that matches the columns in the datatable...

IQueryable<IMyData> GetAS400Data(..parameters..)
{
    DataSet d = GetData();
    ...
    //Some code to convert d to IQueryable<IMyData>
}

DataTable.Rows does not support .AsQueryable, since MSFT yanked it, so I'm not sure what to do here.


回答1:


table.AsEnumerable()...

table.AsEnumerable().AsQueryable()...

However, you'd need to write your own translation (Select) to your type; and the IQueryable<T> would still be using LINQ-to-Objects; the only purpose (in this scenario) of using IQueryable<T> over IEnumerable<T> would be to use expressions for some other reason - perhaps for the dynamic LINQ library.




回答2:


Take a look here it seems that a provider with entity framework for DB2 exists.




回答3:


you can use something like this.

DataSet ds = GetData();
DataTable dt= ds.Tables[0];
var query =
    from row in dt.AsEnumerable() 
    select new IMyData()
    {
        property1= row[0],
        property2= row[1]
    };


来源:https://stackoverflow.com/questions/505054/convert-dataset-to-iqueryablet-or-ienumerablet

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!