[英]Merge and bind two lists to a 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接口。
通过数据集选项(这也是有效的),您从中获得的主要好处是,您仍然可以在视图中使用域对象,而不必在数据集行之间来回转换。
缺点是您仅出于查看目的而使用接口来污染域对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.