Как перенести все свойства класса в таблицу DataGrid?

У меня есть класс со 3 свойствами. И список объектов данного класса.

public class Human
{
    public int Age {get;set;}
    public string Name {get;set;}
    List<double> SomeParam {get;set;}
}

Мне надо в таблицу DataGrid вывести значения Age, Name и значения списка SomeParam в каждую отдельную колонку. У всех объектов списка длина SomeParam одинаковая. Как это можно лаконично прописать?

Вот так - https://pastenow.ru/3117871a3e1b8fda998abe3b08a742e8


Ответы (1 шт):

Автор решения: Amangeldi Annaklychev

Я для таких задач написал Generic метод:

DataTable ConvertToDataTable<TSource>(IEnumerable<TSource> source)
{
     var props = typeof(TSource).GetProperties();

     var dt = new DataTable();
     dt.Columns.AddRange(
     props.Select(p => new DataColumn(p.Name, Nullable.GetUnderlyingType(
            p.PropertyType) ?? p.PropertyType)).ToArray()
            );

     source.ToList().ForEach(
              i => dt.Rows.Add(props.Select(p => p.GetValue(i, null)).ToArray())
            );

     return dt;
}

И можно просто использовать таким оброзом:

DataTable table = ConvertToDataTable(humans);
→ Ссылка