C#模型对象用于报告

时间:2011-05-18 14:26:08

标签: c# asp.net-mvc

我正在从存储过程生成一个报告,该报告以下列格式输出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#中某种模型对象中最有效地表示此类信息的最佳方法。你会怎么做?

2 个答案:

答案 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)

看一下这个帖子How to create CSV Excel file C#?