2011-05-18 58 views
0

我生成從一個存儲過程,在下面的格式輸出一個DataTable的報告:C#模型對象對於報告

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號。

我不喜歡在整個代碼中處理原始數據表,但我不知道在C#中某種模型對象中最有效地表示這些信息的最佳方式。你會怎麼做?

回答

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。

+0

但是這並沒有考慮到id的分組,以使它更容易處理。我想知道的是人們通常如何用C#建模這樣的類? – 2011-05-18 17:33:25

+0

您可以使用Dictionary對象...字典中的鍵是ID,字典中的值可以是具有兩個屬性(日期和值)的自定義類型。 – ctorx 2011-05-18 20:07:52