繁体   English   中英

合并并将两个列表绑定到gridview

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM