如何创建将 DataRowCollection 转换为 C# 中泛型类型的对象数组的方法?
我正在尝试创建一个方法,该方法采用 DataTable 或 DataRowCollection 并将其转换为通用类型的数组。像这样的事情:
public static T[] ConvertToArray<T>(DataTable dataTable)
{
List<T> result = new List<T>();
foreach (DataRow dataRow in dataTable.Rows)
result.Add((T)dataRow);
return result.ToArray();
}
问题是这一行
result.Add((T)dataRow);
给出了 Cannot conversion System.Data.DataRow to T 。
如果我在不使用泛型类型的情况下执行相同的操作,并确保对象的类具有定义的自定义转换运算符,则代码工作正常。
所以现在的问题是,我如何使用泛型来实现这一点?
I am trying to create a method that takes a DataTable or a DataRowCollection and converts it to an array of a generic type. Something like this:
public static T[] ConvertToArray<T>(DataTable dataTable)
{
List<T> result = new List<T>();
foreach (DataRow dataRow in dataTable.Rows)
result.Add((T)dataRow);
return result.ToArray();
}
The problem is this line
result.Add((T)dataRow);
which gives Cannot convert System.Data.DataRow to T.
If I do the same thing without using a generic type, and make sure the class of the objects have a defined custom conversion operator, the code works fine.
So the question is now, how do I pull this of using generics?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用一个对象来提供 DataRow 上到您的类型的转换:
为您的函数提供自定义转换器:
然后,实现您所需类型的接口:
然后您可以使用以下代码调用您的函数:
You could use an object that provides the conversion on a DataRow to your type :
Provide your custom converter to your function :
Then, implement the interface for your needed type :
You can then call your function using this code :
我发现的几个选项:
或
Couple options I found:
or