Как перенести все свойства класса в таблицу 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);