Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
http://www.rusdoc.ru. Версия для печати.

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
© Copyright 1998-2012 Александр Томов. All rights reserved.