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

时间:2012-03-26 08:12:04

标签: c# asp.net

我有两个不同的对象列表:

List<Report>
List<Newsletter>

每个都有“创建日期”属性。我需要按降序对两个列表的创建日期进行排序,并将其绑定到gridview。

如何做到这一点,因为我只能提供一个数据源?

2 个答案:

答案 0 :(得分:3)

您可以先创建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;

答案 1 :(得分:0)

如果两种类型都具有您想要显示的相同属性,那么您可以创建它们都实现的接口。然后您的视图可以具有以下内容。

伪代码:

List<IDisplayReportsAndNewsletter> data = new List<IDisplayReportsAndNewsletter>();

data.Addrange(reports);

data.Addrange(newsletters);

grid.Datasource = data.OrderBy(d => d.CreatedDate).ToList();

其中报告和简报是您在上面描述的列表,其中类现在实现了新的IDisplayReportsAndNewsletter接口。

您从数据集选项中获得的主要好处(也是有效的)是您仍然可以在视图中使用域对象,而不必转换到数据集行和从数据集行转换。

缺点是您只是出于视图的目的而使用界面污染您的域对象