我无法将列表<object []>转换为C#中的列表<T []>

pos*_*tos 4 c# generics object typeconverter

我有以下最终代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

我一直试图以不同的方式将对象数组转换为T泛型类型数组,但我没有做到.对于早期的代码,我得到一个运行时错误:对象必须实现IConvertible.我在定义类时为泛型类型设置了约束:

class Cclass<T>: Iinterface<T> where T:IConvertible
{  
    //body 
}
Run Code Online (Sandbox Code Playgroud)

我愿意接受其他可以实现我向通用数组转换的目标的建议.谢谢!

Dmi*_*nko 5

你可以使用Linq:

  bass = row
    .Select(x => (T)Convert.ChangeType(x, typeof(T)))
    .ToArray();
Run Code Online (Sandbox Code Playgroud)