2017-09-25 256 views
1

我有一個類R具有一些屬性。無法將類型'System.Data.EnumerableRowCollection <System.Data.DataRow>'轉換爲generic.list <T>

同樣我有基於條件上的一列的DataTabledt一個DataTabledt與作爲類的R

我試圖創建從上述2個不同DataTables性質完全相同的列表示dt

我想將這些2 Datatables轉換爲ListR對象。

這是我如何與現在的進步努力:

List<R> Sheet1 = dt.AsEnumerable() 
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) <= Convert.ToDecimal(80)); 

List<R> Sheet2 = dt.AsEnumerable() 
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) > Convert.ToDecimal(80)); 

但它拋出一個錯誤:

Cannot convert type 'System.Data.EnumerableRowCollection' to generic.list

我試着做各種鑄件,但沒有使用:

List<R> Sheet1 = (List<R>)dt.AsEnumerable() 
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) <= Convert.ToDecimal(80)); 

List<R> Sheet2 = (List<R>)dt.AsEnumerable() 
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) > Convert.ToDecimal(80)); 

List<R> Sheet1 = (List<R>)dt.AsEnumerable() 
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) <= Convert.ToDecimal(80)) 
    .ToList(); 

List<R> Sheet2 = (List<R>)dt.AsEnumerable() 
    .Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) > Convert.ToDecimal(80)) 
    .ToList(); 
+1

什麼是'R'這裏?嘗試使用'st.Select'方法或使用'var'代替列表

+1

什麼是R?如果它不是'System.Data.Row'的子類,則需要編寫代碼來從現有的System.Data.Row初始化一個新的'R'。鑄造不是魔術。當你投A到B時,A必須是* B,或者必須有一些代碼被調用來將A *轉換成* a B. –

+1

你真的有類似'R'的類嗎?更短的名字werent可用?我想你的第一堂課是'A' –

回答

2

您的Where聲明正在返回EnumerableRowCollection<DataRow>。您需要從您的查詢選擇R一個List,使這個工程:

List<R> Sheet1 = dt.AsEnumerable(). 
     Where(row => Convert.ToDecimal(row["SomeDecimalColumn"]) <= Convert.ToDecimal(80)) 
    .Select(c => new R 
     { SomeDecimalColumn = Convert.ToDecimal(c["SomeDecimalColumn"]) /*other propertie*/ }) 
    .ToList(); 
相關問題