转换或转换 DataTable 类型
Converting or casting DataTable types
我有一些类看起来像,例如
public class VarcharTokens : DataTable
{
public VarcharTokens()
{
Columns.Add("Value", typeof(string));
}
}
我想要做的是从一个数据库读取并写入另一个数据库,在两者之间传递 DataTable
。如果源 returns 是 DataTable
而目标需要 VarcharTokens
那么我需要一种高效的方法来转换、转换或以其他方式处理类型差异。
我想 DataTable
扩展方法会以某种方式起作用。我尝试查看 explicit/implicit 运算符,但 user-defined conversions to or from a base type are not allowed
.
我有哪些选择?
如果可能的话,我不想以 2 个数据副本结束;在我的用例中,数据量确实很大。
我想出的解决办法是扩展方法如下
public static VarcharTokens ToVarcharTokens(this DataTable dt)
{
var result = new VarcharTokens();
dt.AsEnumerable().All(r => { result.Rows.Add().ItemArray = r.ItemArray; return true; });
我随后将其概括为这样
public static T DTConvert<T>(this DataTable dt) where T:DataTable, new ()
{
try
{
T result = new T();
dt.AsEnumerable().All(r => { result.Rows.Add().ItemArray = r.ItemArray; return true; });
return result;
}
catch (Exception ex)
{
throw new Exception($"UDTConversionError to {typeof(T)} : {ex.Message}");
}
}
我有一些类看起来像,例如
public class VarcharTokens : DataTable
{
public VarcharTokens()
{
Columns.Add("Value", typeof(string));
}
}
我想要做的是从一个数据库读取并写入另一个数据库,在两者之间传递 DataTable
。如果源 returns 是 DataTable
而目标需要 VarcharTokens
那么我需要一种高效的方法来转换、转换或以其他方式处理类型差异。
我想 DataTable
扩展方法会以某种方式起作用。我尝试查看 explicit/implicit 运算符,但 user-defined conversions to or from a base type are not allowed
.
我有哪些选择?
如果可能的话,我不想以 2 个数据副本结束;在我的用例中,数据量确实很大。
我想出的解决办法是扩展方法如下
public static VarcharTokens ToVarcharTokens(this DataTable dt)
{
var result = new VarcharTokens();
dt.AsEnumerable().All(r => { result.Rows.Add().ItemArray = r.ItemArray; return true; });
我随后将其概括为这样
public static T DTConvert<T>(this DataTable dt) where T:DataTable, new ()
{
try
{
T result = new T();
dt.AsEnumerable().All(r => { result.Rows.Add().ItemArray = r.ItemArray; return true; });
return result;
}
catch (Exception ex)
{
throw new Exception($"UDTConversionError to {typeof(T)} : {ex.Message}");
}
}