У меня есть столбец с датой и временем, и я хочу получить годы назначения в новом списке.
Цель состоит в том, чтобы заполнить DropDownList только определенными годами (ГГГГ, а не ГГГГ-ММ-ДД ЧЧ: ММ: СС), извлеченными из столбца Games.Date.
У меня есть объекты:
LDSYears (LinqDataSource)
LDSUserResults (LinqDataSource)
DropDownList1
LDSYears_Selecting (LinqDataSourceSelectEvent)
GridView1
Я думал, что буду использовать LDSYears для заполнения DropDownList1, а затем использовать DropDownList1 в качестве оператора Where в LDSUserResults для фильтрации только пользовательских результатов за год, который был выбран в DropDownList1.
LinqDataSourceSelectEvent - это место, где расположены коды. Причина, по которой у меня есть этот код в Событии, заключается в том, что, как я прочитал, невозможно использовать destinct в LinqDataSource, и я также хочу обрезать вывод только по году, а не по дате / времени.
Protected Sub LDSYears_Selecting(sender As Object, _
e As System.Web.UI.WebControls.LinqDataSourceSelectEventArgs) _
Handles LDSYears.Selecting
Dim years = From dy In (From ys In db.Games _
Where ys.Date.Year.ToString <> "" Distinct _
Select ys.ID, ys.Date Distinct) _
Select dy _
Order By dy.Date Descending
e.Result = years
End Sub
Games.Date column:
2009-01-10 09:00:00
2009-03-10 09:00:00
2010-02-10 09:00:00
2010-03-10 09:00:00
2011-01-10 09:00:00
2011-03-10 09:00:00
И я хочу, чтобы новый список, подобный этому, был добавлен в мой DropDownList, идентификатор для индекса и Годы для значения:
ID Years
1 2011
2 2010
3 2009
Может быть, я смотрю на это под неправильным углом, это возможно?
Я могу сделать это с помощью кода, но я подумал, что это лучший способ использовать DropDownList в качестве фильтра для LDSUserResults.