C#如何将List <object []>转换为List <customclass>

时间:2016-12-07 02:19:43

标签: c# linq

这是我的代码。可以在Linqpad中运行。

void Main(){

   List<Object> listobj=new List<object>{
   new object[]{"A01001","sucess","on"},
   new object[]{"A01002","fail","off"}};
   listobj.Dump();

   var second = listobj.Cast<RowItem>();
   second.Dump();
}

public class RowItem {
   public string GOODS_ID { get; set; }
   public string AUDIT_STATUS { get; set; }
   public string APPLY_STATUS { get; set; }
}

我希望将List<object>转换为List<RowItem>,但是当我使用强制转换方法时,它会返回错误cannot convert type 'System.Object[]' to class RowItem

这可能,还是有其他方法可以实现这一目标?

谢谢。

1 个答案:

答案 0 :(得分:7)

您的listobj类型在许多级别上都不正确。该类型是隐藏为对象数组的对象数组的集合。如果您想继续使用相同的类型,可以使用以下代码。

void Main()
{

    List<Object> listobj = new List<object>{
   new object[]{"A01001","sucess","on"},
   new object[]{"A01002","fail","off"}};
    listobj.Dump();

    var second = listobj.Cast<object[]>().Select(l => new RowItem { 
                                                        GOODS_ID=l[0].ToString(),
                                                        AUDIT_STATUS=l[1].ToString(),
                                                        APPLY_STATUS=l[2].ToString() 
                                                });
    second.Dump();
}

public class RowItem
{
    public string GOODS_ID { get; set; }
    public string AUDIT_STATUS { get; set; }
    public string APPLY_STATUS { get; set; }
}