Учитывая список объектов, мне нужно преобразовать их в набор данных, где каждый элемент в списке представлен строкой, а каждое свойство является столбцом в строке. Затем этот DataSet будет передан функции Aspose.Cells, чтобы создать документ Excel в качестве отчета.Как преобразовать список <T> в DataSet?
Скажем, у меня есть следующие:
public class Record
{
public int ID { get; set; }
public bool Status { get; set; }
public string Message { get; set; }
}
Учитывая список записей, как я превратить его в DataSet следующим образом:
ID Status Message
1 true "message"
2 false "message2"
3 true "message3"
...
На данный момент единственное, что я могу думать о заключается в следующем:
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);
}
Но этот путь оставляет мне мнение, что должен быть лучший способ, поскольку на в самом деле, если новые свойства добавляются в запись, они не будут отображаться в DataSet ... но в то же время это позволяет мне управлять порядком, в которое каждое свойство добавляется в строку.
Кто-нибудь знает, как лучше это сделать?
Ну, сообщество высказалось, поэтому я проголосую за этот ответ, хотя я не смогу использовать его для своих целей, так как хочу контролировать порядок параметров. Но я обязательно буду учитывать это решение ... – mezoid
Эй, я только что протестировал ваше расширение и обнаружил, что если вы хотите контролировать порядок появления столбцов в datatable, тогда вам нужно объявить их в том порядке, в котором вы хотите, чтобы они в объекте типа T перешли к расширению. Это потрясающе! – mezoid