转换或转换 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}"); 
        }
    }