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

4
我有以下最终代码:
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 
}

我愿意接受其他建议,只要能满足将数据转换为通用数组的目标。

谢谢!

2个回答

5
您可以使用Linq:
  bass = row
    .Select(x => (T)Convert.ChangeType(x, typeof(T)))
    .ToArray();

我得到了相同的错误:无法隐式转换类型“object []”为“T []”。 - postos

2

我之前不知道两个集合之间的转换可以这样做。逐个迭代和转换确实有效。非常感谢你的回答! - postos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接