C# - 从.net 4.0中的下拉列表中删除重复的项目

时间:2012-09-24 05:02:21

标签: c# linq drop-down-menu

.net framework 4.0中遇到的问题

我目前有2个下拉列表,其中一个用于选择月份,另一个用于年份选择。

它们的数据源都是来自SQL的数据表,它返回包含年份和月份的行作为列。然后,我使用datatextfield和datavaluefield指定要使用的列。例如:

string sql = "select.... group by...";//the query

DataTable dtMonthYear = db.getDataTable(sql); //got the datatable

ddlMonth.DataSource = dtMonthYear;
ddlMonth.DataTextField = "Month";
ddlMonth.DataValueField = "Month";
ddlMonth.DataBind();

ddlYear.DataSource = dtMonthYear;
ddlMonth.DataTextField = "Year";
ddlMonth.DataValueField = "Year";
ddlYear.DataBind();

因此,年份中将有重复的项目,我希望消除重复的项目。

我发现linq可以做到但不幸的是我的框架只有4.0才能使用datarowextension。这是我得到的链接:LINQ query on a DataTable

任何人都有其他想法吗?

由于

1 个答案:

答案 0 :(得分:1)

您可以在.NET 4中使用Linq-To-DataSet(即使在3.5中):

DataTable years = dtMonthYear.AsEnumerable()
                  .GroupBy(r => r.Field<int>("Year"))
                  .Select( g => g.OrderBy(r => r.Field<int>("Month")).First())
                  .CopyToDataTable();

请注意,您需要添加using System.Linq;