![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Синтаксис запиту або синтаксис методуСодержание книги
Поиск на нашем сайте
У попередніх прикладах більшість запитів написані як вирази запитів за допомогою декларативного синтаксису запиту, представленого в C# 3.0. Проте в самому загальномовному середовищі виконання (CLR).NET відсутнє поняття синтаксису запиту. Таким чином, під час компіляції вирази запиту перетворяться в те, що зрозуміло CLR – виклики методів. Ці методи називаються стандартними операторами запитів, і вони мають такі імена, як Where, Select, GroupBy, Join, Мах, Average і так далі Їх можна викликати безпосередньо, використовуючи синтаксис методів замість синтаксису запитів. В цілому, рекомендується синтаксис запитів, оскільки зазвичай він простіший і легко читається; проте між синтаксисом методів і синтаксисом запитів немає семантичної різниці. Крім того, деякі запити, наприклад такі, які вибирають кількість елементів, відповідних вказаній умові, або які вибирають елемент, що має максимальне значення у вихідній послідовності, можуть бути виражені лише у вигляді викликів методів. У довідковій документації по стандартних операторах запитів в просторі імен System.Linq зазвичай використовується синтаксис методів. Тому, навіть на початковому етапі написання запитів LINQ корисно знати, як використовувати синтаксис методів в запитах і самих виразах запиту. Методи розширення стандартних операторів запитів У наступному прикладі показано просте вираження запиту і семантично еквівалентний йому запит, написаний як запит на основі методу: class QueryVMethodSyntax{ static void Main() { int[] numbers = { 5, 10, 8, 3, 6, 12 }; //Синтаксис запиту: IEnumerable<int> numQuery1 = from num in numbers where num % 2 == 0 orderby num select num; //Синтаксис методу: IEnumerable<int> numQuery2 = numbers.Where(num => num % 2 == 0).OrderBy(n => n); foreach (int i in numQuery1) { Console.Write(i + " "); } Console.WriteLine(System.Environment.NewLine); foreach (int i in numQuery2) { Console.Write(i + " "); } Console.WriteLine(System.Environment.NewLine); Console.WriteLine("Натискуйте будь-яку кнопку для виходу!"); Console.ReadKey(); }}/* На виході буде отримано: 6 8 10 12 6 8 10 12 */ Два приклади мають ідентичні результати. Тип змінної запиту однаковий в обох формах: IEnumerable<(Of <(T>)>). Аби зрозуміти запит на основі методу, розглянемо його детальніше. Звернете увагу, що в правій частині виразу пропозиція where тепер виражена у вигляді методу екземпляра об'єкту numbers, який має тип IEnumerable<int>. Якщо ви знайомі з універсальним інтерфейсом IEnumerable<(Of <(T>)>), вам відомо, що він не має методу Where. Проте при виклику списку завершення IntelliSense в IDE Visual Studio відображуватиме не лише метод Where, але і багато інших методів, такі як Select, SelectMany, Join і Orderby. Вони всі є стандартними операторами запитів.
Лямбда-вирази У попередньому прикладі умовний вираз (num % 2 == 0) передається як вбудований аргумент методу Where: Where(num => num % 2 == 0). Цей вбудований вираз називається лямбда-виразом. Він є зручним способом написання коду, який інакше довелося б записувати в громіздкішій формі як анонімний метод, універсальний делегат або дерево виразів. У C# => є лямбда-оператором, який читається як "переходить". num зліва від оператора є вхідній змінній, яка відповідає num у виразі запиту. Компілятор може визначити тип num, оскільки йому відомо, що numbers є універсальним типом IEnumerable<(Of <(T>)>). Основна частина лямбда-виразу представляє те саме, що і вираз в синтаксисі запиту або в будь-якому іншому виразі або операторі C#; він може включати виклики методів і іншу складну логіку. Значенням, що повертається є просто результат виразу. Приступаючи до роботи з LINQ, немає необхідності широко використовувати лямбда-вирази. Проте деякі запити можуть виражатися лише в синтаксисі методів, а деякі з них вимагають лямбда-виразів.
|
|||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 235; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.31.157 (0.005 с.) |