如何将动态列表转换为列表<class>?

时间:2016-03-22 08:50:40

标签: list c#-4.0 arraylist dynamic

我正在尝试将动态列表转换为类模型列表(Products)。这就是我的方法的样子:

public List<Products> ConvertToProducts(List<dynamic> data)
{
    var sendModel = new List<Products>();

    //Mapping List<dynamic> to List<Products>
    sendModel = data.Select(x =>
    new Products
    {
        Name = data.GetType().GetProperty("Name").ToString(),
        Price = data.GetType().GetProperty("Price").GetValue(data, null).ToString()
    }).ToList();
}

我已尝试过这两种方法来获取属性值,但它给出了我的空错误,说这些属性不存在或者它们为空。

  

Name = data.GetType()。GetProperty(“Name”)。ToString(),

     

Price = data.GetType()。GetProperty(“Price”)。GetValue(数据,   空)的ToString()

这就是我的Model-class的样子:

public class Products
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Price { get; set; }
}

有人可以让我知道我错过了什么吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您目前正在尝试从data获取属性,这是您的列表 - 而您忽略了x,即列表中的。我怀疑你想要:

var sendModel = data
    .Select(x => new Products { Name = x.Name, Price = x.Price })
    .ToList();

可能想要对属性的结果调用ToString(),但不清楚原始数据中的内容。