2014-10-16 70 views
4

我有以下的最終代碼:我不能轉換列表<object[]>列出<T[]>在C#

SqlDataReader dataReader; 
dataReader = cmd.ExecuteReader(); 
// var list = new List<string[]>(); 
List<T[]> list = new List<T[]>(); 

while (dataReader.Read()) 
{ 
    // var row = new string[dataReader.FieldCount]; 
    //object[] row new object; 
    T[] bass; 
    object[] row = new object[dataReader.FieldCount]; 
    dataReader.GetValues(row); 
    bass = (T[]) Convert.ChangeType(row,typeof(T[])); 
    list.Add(bass); 
} 

我一直在試圖爲一個對象數組轉換爲以不同的方式爲T泛型類型數組,但我沒有做了。對於前面的代碼,我得到一個運行時錯誤:對象必須實現IConvertible。 我把一個約束的泛型類型時,我定義的類:

class Cclass<T>: Iinterface<T> where T:IConvertible 
{ 
    //body 
} 

我對那些能滿足我的鑄造通用陣列的目標其他建議。 謝謝!

回答

5

您可以使用LINQ的

bass = row 
    .Select(x => (T)Convert.ChangeType(x, typeof(T))) 
    .ToArray(); 
+0

我得到了同樣的錯誤:不能隱式地將類型'object []'轉換爲'T []' – postos 2014-10-16 12:13:25

+1

@postos請再試一次,添加一個轉換應該可以做到。 – dasblinkenlight 2014-10-16 12:16:20

相關問題