Biorąc pod uwagę listę obiektów, muszę przekształcić go w zestaw danych, gdzie każdy element na liście jest reprezentowany przez wiersz i każda właściwość jest kolumną w wierszu. Ten zestaw danych zostanie następnie przekazany do funkcji Aspose.Cells w celu utworzenia dokumentu Excel jako raportu.Jak przekształcić listę <T> w zestaw danych?
Say mam następujące:
public class Record
{
public int ID { get; set; }
public bool Status { get; set; }
public string Message { get; set; }
}
Biorąc pod uwagę zapisy listy, w jaki sposób przekształcić go w zestawie danych w następujący sposób:
ID Status Message
1 true "message"
2 false "message2"
3 true "message3"
...
w tej chwili jedyną rzeczą mogę myśleć jest następujący:
DataSet ds = new DataSet
ds.Tables.Add();
ds.Tables[0].Add("ID", typeof(int));
ds.Tables[0].Add("Status", typeof(bool));
ds.Tables[0].Add("Message", typeof(string));
foreach(Record record in records)
{
ds.Tables[0].Rows.Add(record.ID, record.Status, record.Message);
}
Ale w ten sposób myślę, że musi być lepszy sposób, ponieważ na przynajmniej jeśli nowe właściwości zostaną dodane do Record, nie pojawią się w DataSet ... ale jednocześnie pozwolą mi kontrolować kolejność każdej właściwości dodawanej do wiersza.
Czy ktoś wie o lepszy sposób to zrobić?
Cóż, społeczność się odezwała, więc zagłosuję na tę odpowiedź, mimo że nie będę mógł jej użyć do moich celów, ponieważ chcę kontrolować kolejność parametrów. Ale na pewno będę mieć to na uwadze ... – mezoid
Hej, właśnie przetestowałem twoje rozszerzenie i stwierdziłem, że jeśli chcesz kontrolować kolejność kolumn pojawiają się w datatable, to musisz zadeklarować je w kolejności, w której chcesz je w obiekcie typu T, który przekazujesz do rozszerzenia. To cudownie! – mezoid