我正在从存储过程生成一个报告,该报告以下列格式输出DataTable:
id | date | value
--------------------------
0 | 5/18/11 | 10
0 | 5/19/11 | 13
0 | 5/20/11 | 7
0 | 5/21/11 | 1
1 | 5/18/11 | 9
1 | 5/19/11 | 34
1 | 5/20/11 | 5
1 | 5/21/11 | 6
其中id对应于员工的ID号。
我不喜欢在我的代码中处理原始DataTables,但我不知道在C#中某种模型对象中最有效地表示此类信息的最佳方法。你会怎么做?
答案 0 :(得分:1)
简单地上课......
public class ReportModel
{
public int ID {get; private set;}
public DateTime Date {get; private set;}
public int Value {get; private set;}
private ReportModel() {}
public static ReportModel FromDataRow(DataRow dataRow)
{
return new ReportModel
{
ID = Convert.ToInt32(dataRow["id"]),
Date = Convert.ToDateTime(dataRow["date"]),
Value = Convert.ToInt32(dataRow["value"])
};
}
public static List<ReportModel> FromDataTable(DataTable dataTable)
{
var list = new List<ReportModel>();
foreach(var row in dataTable.Rows)
{
list.Add(ReportModel.FromDataRow(row);
}
return list;
}
}
您还可以使用AutoMapper封装从DataRow到ReportModel的映射。
答案 1 :(得分:0)