LINQ – замечательная вещь, которая обладает огромным потенциалом. Всем заинтересованным программистам известны LINQ to SQL или LINQ to XML. Я бы хотел расширить этот список и привести простейший пример другого применения LINQ.
Возьмем для примера такой элемент управления asp.net как CheckBoxList. Этот элемент позволяет вывести набор checkbox'ов объединенных каким-то общим смыслом. Например, мы можем вывести список банков, дав пользователю возможность создать необходимый в некотором контексте набор.
Задача будет состоять в том, чтобы получить список идентификаторов банков, которые выбрал пользователь. В простейшем случае мы могли бы пробежаться по коллекции элементов и выбрать те, которые отметил пользователь. Но LINQ позволяет сделать этот процесс еще проще:
Очень просто и элегантно, не находите? Хотел бы заметить, что LINQ может пригодится для похожей работы не только с элементами управления, но и с любой не generic коллекцией через Enumerable.Cast(TResult) или схожий метод Enumerable.OfType(TResult).
PS: «в статье нет ошибок!» — к сожалению утверждать этого невозможно, но я буду рад, если вы обратите мое внимание на найденную вами ошибку.
Возьмем для примера такой элемент управления 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: «в статье нет ошибок!» — к сожалению утверждать этого невозможно, но я буду рад, если вы обратите мое внимание на найденную вами ошибку.