2009-02-02 113 views
11

由於目前還沒有Linq to DB2(來吧IBM!或者一個IEnumerable?將數據集轉換爲IQueryable <T>或IEnumerable <T>

我有一個接口和該列中的數據表匹配類...

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

DataTable.Rows不支持.AsQueryable,因爲MSFT猛拉它,所以我不知道該怎麼在這裏做。

+0

.AsEnumerable()<= using System.Data; – 2014-10-22 08:48:41

回答

17
table.AsEnumerable()... 

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

但是,你需要您自己的翻譯(Select)寫信給你的類型;和IQueryable<T>仍將使用LINQ到對象;使用IQueryable<T>而不是IEnumerable<T>的唯一目的(在這種情況下)將使用表達式來解決某些其他原因 - 可能是dynamic LINQ library

+0

你如何轉換其他方式?從IQueryable到DataTable? – MattSlay 2009-03-30 17:03:51

1

Take a look here似乎存在具有DB2實體框架的提供者。

+0

不幸的是,由於去年糟糕的經歷,EF已被排除在外。這是不幸的,因爲EF是MSFT的未來... – jlembke 2009-02-03 16:56:01

1

你可以使用這樣的東西。

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