为了账号安全,请及时绑定邮箱和手机立即绑定

将 List<T> 转换为 List<myType>

将 List<T> 转换为 List<myType>

C#
慕尼黑5688855 2021-09-19 18:55:21
当调用任何转换函数错误出现时:Argument 2: cannot convert from 'System.Collections.Generic.List<T>' to 'System.Collections.Generic.List<ProductionRecent>我试图在函数内传递任何列表,确定它必须是哪个列表并转换它。有什么建议?    public List<T> ConvertToList<T>(DataTable dt, List<T> list)    {        if (list.GetType() == typeof(List<ProductionPending>))        {                            ConvertToProductionPending(dt, list);   // ERROR        }        else if (list.GetType() == typeof(List<ProductionRecent>))        {            ConvertToProductionRecent(dt, list);   // ERROR        }        else if (list.GetType() == typeof(List<MirrorDeployments>))        {            ConvertToMirror(dt list);   // ERROR        }        return list;    }    private List<ProductionPending> ConvertToProductionPending(DataTable dt, List<ProductionPending> list)    {          // do some stuff here          return list;    }    private List<ProductionRecent> ConvertToProductionRecent(DataTable dt, List<ProductionRecent> list)    {        // do some stuff here        return list;    }    private List<MirrorDeployments> ConvertToMirror(DataTable dt, List<MirrorDeployments> list)    {        // do some stuff here        return list;    }
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

尝试在传递给您的方法之前进行转换:


public List<T> ConvertToList<T>(DataTable dt, List<T> list)

{

    if (list.GetType() == typeof(List<ProductionPending>))

    {                

        ConvertToProductionPending(dt, (list as List<ProductionPending>)); 

    }

    else if (list.GetType() == typeof(List<ProductionRecent>))

    {

        ConvertToProductionRecent(dt, (list as List<ProductionRecent>));   

    }

    else if (list.GetType() == typeof(List<MirrorDeployments>))

    {

        ConvertToMirror(dt, (list as List<MirrorDeployments>));

    }

    return list;

}

编辑:


另外,如果您只是返回列表而不做任何事情,则根本不需要 convert 方法,只需像 List<MirrorDeployments> l2 = (list as List<MirrorDeployments>)


如果您使用的是 C# 7,您还可以使用模式匹配:


public List<T> ConvertToList<T>(DataTable dt, List<T> list)

{

    switch(list)

    {

        case List<ProductionPending> pp:

            //pp is list cast as List<ProductionPending>

            break;

        case List<ProductionRecent> pr:

            //pr is list cast as List<ProductionRecent>

            break;

        case List<MirrorDeployments> md:

            //md is list cast as List<MirrorDeployments>

            break;          

    }

    return list;

}


查看完整回答
反对 回复 2021-09-19
  • 1 回答
  • 0 关注
  • 353 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信