我有不同對象的兩個列表:合併和兩個列表綁定到一個GridView
List<Report>
List<Newsletter>
每一個都具有「創建日期」屬性。我需要按降序對兩個列表的創建日期進行排序,並將其綁定到一個gridview。
如何做到這一點,因爲我只能提供一個數據源?
我有不同對象的兩個列表:合併和兩個列表綁定到一個GridView
List<Report>
List<Newsletter>
每一個都具有「創建日期」屬性。我需要按降序對兩個列表的創建日期進行排序,並將其綁定到一個gridview。
如何做到這一點,因爲我只能提供一個數據源?
你可以先創建日期的List
:
var rows = reports.Select(x => x.CreateDate).Union(news.Select(x => x.CreateDate)).OrderByDescending(x => x.Date).ToList();
然後用DataTable
結構結合:
DataTable dt = new DataTable();
dt.Columns.Add("Date");
foreach (var row in rows) {
dt.Rows.Add(row);
}
grid.DataSource = dt;
如果兩種類型有你想要顯示相同的屬性,那麼你可以創建他們都實現的接口。那麼你的觀點可以有以下幾點。
僞代碼:
List<IDisplayReportsAndNewsletter> data = new List<IDisplayReportsAndNewsletter>();
data.Addrange(reports);
data.Addrange(newsletters);
grid.Datasource = data.OrderBy(d => d.CreatedDate).ToList();
其中報告和簡報是你描述上面對類現在實現新IDisplayReportsAndNewsletter接口列表。
從數據集選項(這也是有效的)中獲得的主要好處是,您仍然可以在視圖中使用您的域對象,而不必在數據集行之間進行翻譯。
的缺點是,你與接口污染你的域對象只爲您的視圖的目的
在這裏,我將只獲得綁定到網格視圖的日期時間值。我需要將名稱,日期和狀態綁定到網格。我如何選擇使用lambda表達式的3個屬性? – NewBie 2012-03-26 09:30:17
您可以選擇匿名對象而不僅僅是日期 – ionden 2012-03-26 10:04:23
明白了。匿名對象完成了這項工作。謝謝。 – NewBie 2012-03-26 10:34:21