How to convert a dynamic list into list<Class>?

I'm trying to convert a dynamic list into a list of class-model(Products). This is how my method looks like:

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();
}

I have tried these both ways to get the property values, but it gives me null errors saying these properties doesn't exist or they are null.

Name = data.GetType().GetProperty("Name").ToString(),

Price = data.GetType().GetProperty("Price").GetValue(data, null).ToString()

This is how my Model-class looks like:

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

Can someone please let me know what I'm missing? thanks in advance.

Jon Skeet
people
quotationmark

You're currently trying to get properties from data, which is your list - and you're ignoring x, which is the item in the list. I suspect you want:

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

You may want to call ToString() on the results of the properties, but it's not clear what's in the original data.

people

See more on this question at Stackoverflow