LINQ: еще один вариант использования
Раздел:
Programming /
.NET Framework
@
11.05.2008 |
Ключевые слова: .net linq
Источник: habrahabr
LINQ – замечательная вещь, которая обладает огромным потенциалом. Всем заинтересованным программистам известны LINQ to SQL или LINQ to XML. Я бы хотел расширить этот список и привести простейший пример другого применения LINQ.
Возьмем для примера такой элемент управления asp.net как CheckBoxList. Этот элемент позволяет вывести набор checkbox`ов объединенных каким-то общим смыслом. Например, мы можем вывести список банков, дав пользователю возможность создать необходимый в некотором контексте набор.
<asp:CheckBoxList ID="cblBanks" runat="server">
</asp:CheckBoxList>
<asp:SqlDataSource ID="dsBanks" runat="server"
ConnectionString="<%$ ConnectionStrings:SampleConnectionString %>"
SelectCommand="SELECT b.id, b.shortName FROM Banks b">
</asp:SqlDataSource>
cblBanks.DataSource = dsBanks;
cblBanks.DataValueField = "id";
cblBanks.DataTextField = "shortName";
cblBanks.DataBind();
* This source code was highlighted with Source Code Highlighter.
Задача будет состоять в том, чтобы получить список идентификаторов банков, которые выбрал пользователь. В простейшем случае мы могли бы пробежаться по коллекции элементов и выбрать те, которые отметил пользователь. Но LINQ позволяет сделать этот процесс еще проще:
var Banks = cblBanks.Items.Cast<ListItem>()
.Where(x => x.Selected == true)
.Select(y => Convert.ToInt32(y.Value));
* This source code was highlighted with Source Code Highlighter.
Очень просто и элегантно, не находите? Хотел бы заметить, что LINQ может пригодится для похожей работы не только с элементами управления, но и с любой не generic коллекцией через Enumerable.Cast(TResult) или схожий метод Enumerable.OfType(TResult) .
PS: "в статье нет ошибок!" - к сожалению утверждать этого невозможно, но я буду рад, если вы обратите мое внимание на найденную вами ошибку.
Вернуться в раздел:
Programming /
.NET Framework