0

.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

有人有其他想法吗?

谢谢

4

1 回答 1

1

您可以Linq-To-DataSet在 .NET 4 中使用(甚至在 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;

于 2012-09-24T05:21:04.803 回答