Yurijnd.com
Четверг, 06.02.2025, 20:52
Меню сайта

Вход на сайт

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Выражения запросов LINQ (Руководство по программированию на C#)

    Visual Studio 2013
     

    LINQ — это название набора технологий, основанных на интеграции возможностей запроса непосредственно в язык C# (а также в Visual Basic и, возможно, в любые другие языки .NET). Благодаря LINQ запрос теперь является одним из основных структурных элементов языка, подобно классам, методам, событиям и т. д.

    С точки зрения разработчиков, создающих запросы, выражение запроса — это та, наиболее заметная, "встроенная в язык" часть LINQ (синтаксиса встроенных в язык запросов). Выражения запросов составляются в соответствии с декларативным синтаксисом запроса, который был впервые предложен в C# 3.0. Синтаксис запроса позволяет выполнять достаточно сложную фильтрацию, упорядочение и операции группирования при работе с источниками данных, используя минимум программного кода. Можно использовать одинаковые базовые шаблоны запросов для запроса и преобразования данных в базах данных SQL, наборах данных ADO.NET, документах и потоках XML, а также в коллекциях .NET.

    В следующем примере показана выполненная операция запроса. Для выполнения операции запроса требуется создать источник данных, определить выражение запроса и выполнить запрос в операторе foreach.

     
    class LINQQueryExpressions
    {
     static void Main()
     {
    
     // Specify the data source. 
     int[] scores = new int[] { 97, 92, 81, 60 };
    
     // Define the query expression.
     IEnumerable<int> scoreQuery =
     from score in scores
     where score > 80
     select score;
    
     // Execute the query. 
     foreach (int i in scoreQuery)
     {
     Console.Write(i + " ");
     } 
     }
    }
    // Output: 97 92 81
    

    Дополнительные сведения об основах LINQ в C# см. в разделе Приступая к работе с LINQ в C#.

    Общие сведения о выражениях запросов

     
    • Выражения запросов можно использовать для запроса и преобразования данных, полученных из любого источника данных, поддерживающего LINQ. Например, один и тот же запрос может извлекать данные из базы данных SQL и на выходе создавать поток XML.

    • Выражения запросов достаточно легко изучить, поскольку они во многом схожи с элементами языка C#. Дополнительные сведения см. в разделе Приступая к работе с LINQ в C#.

    • Все переменные в выражении запросов имеют строгую типизацию, хотя во многих случаях не требуется явным образом указывать тип, поскольку компилятор его вычисляет. Дополнительные сведения см. в разделе Отношения между типами в операциях запросов LINQ (C#).

    • Выполнение запроса не происходит до использования переменной запроса в операторе foreach. Дополнительные сведения см. в разделе Введение в запросы LINQ (C#).

    • При компиляции выражения запросов преобразуется в вызовы методов стандартных операторов запроса согласно правилам, указанным в спецификациях языка C#. Любой запрос, который может быть выражен с помощью синтаксиса запросов, также может быть выражен с помощью синтаксиса методов. Однако синтаксис запросов в большинстве случаев понятнее и лаконичнее. Дополнительные сведения см. в разделах Спецификация языка C# и Общие сведения о стандартных операторах запроса.

    • При создании запросов LINQ рекомендуется использовать синтаксис запросов везде, где это возможно, и синтаксис методов, если это необходимо. Между этими двумя видами не существует различий ни в семантике, ни в производительности. Выражения запросов просто более понятны, чем соответствующие им выражения, написанные с помощью синтаксиса методов.

    • Для некоторых операций запросов, таких как Count или Max, нет соответствующих предложений в выражениях запросов, поэтому их необходимо создавать с помощью вызова методов. Синтаксис запросов и синтаксис методов можно сочетать друг с другом различными способами. Дополнительные сведения см. в разделе Синтаксис запросов и синтаксис методов в LINQ (C#).

    • В зависимости от типа, к которому применяется запрос, выражения запросов можно компилировать в деревья выражений или в делегаты. Запросы IEnumerable компилируются в делегаты. Запросы IQueryable и IQueryableкомпилируются в деревья выражений. Дополнительные сведения см. в разделе Деревья выражений (C# и Visual Basic).

    В следующей таблице перечислены разделы, содержащие дополнительные сведения запросах и примеры кода для распространенных задач.

     

    Раздел

    Описание

    Основы выражения запроса (Руководство по программированию в C#)

    Описание основных принципов работы запросов, примеры синтаксиса запросов C#.

    Практическое руководство. Создание запросов LINQ на языке C#

    Примеры нескольких базовых типов выражений запросов.

    Практическое руководство. Обработка исключений в выражениях запросов (Руководство по программированию на C#)

    Как и когда перемещать код, в котором могут возникнуть исключения, за пределы выражений запросов.

    Практическое руководство. Заполнение коллекций объектов из нескольких источников (LINQ)

    Как использовать оператор select для слияния данных из разных источников в новый тип.

    Практическое руководство. Группировка результатов запросов (Руководство по программированию на C#)

    Различные способы использования предложения group.

    Практическое руководство. Создание вложенной группы (Руководство по программированию на C#)

    Демонстрация создания вложенных групп.

    Практическое руководство. Вложенный запрос в операции группирования (Руководство по программированию на C#)

    Демонстрация использования вложенных выражений в запросе в качестве источника данных для нового запроса.

    Практическое руководство. Группирование результатов по смежным ключам (Руководство по программированию в C#)

    Показано, как реализовать потокобезопасный стандартный оператор запроса, который может выполнять операции группирования на потоковых источниках данных.

    Практическое руководство. Динамическое определение фильтров предикатов во время выполнения (Руководство по программированию на C#)

    Демонстрация предоставления произвольного числа значений для сравнения равенства в предложении where.

    Практическое руководство. Сохранение результатов запроса в памяти (Руководство по программированию в C#)

    Демонстрация материализации и хранения результатов запросов без обязательного использования цикла foreach.

    Практическое руководство. Возврат запроса из метода (Руководство по программированию на C#)

    Демонстрация возврата переменных запросов из методов и передачи их методам в качестве входных параметров.

    Практическое руководство. Выполнение пользовательских операций соединения (Руководство по программированию на C#)

    Демонстрация операций соединения на основе функций предикатов любых видов.

    Практическое руководство. Соединение с помощью составных ключей (Руководство по программированию в C#)

    Демонстрация соединения двух источников на основе нескольких совпадающих ключей.

    Практическое руководство. Упорядочение результатов предложения соединения (Руководство по программированию на C#)

    Демонстрация упорядочения последовательности, созданной в результате операции соединения.

    Практическое руководство. Выполнение внутренних соединений (Руководство по программированию на C#)

    Демонстрация выполнения внутреннего соединения в LINQ.

    Практическое руководство. Выполнение групповых соединений (Руководство по программированию на C#)

    Демонстрация выполнения группового соединения в LINQ.

    Практическое руководство. Выполнение левых внешних соединений (Руководство по программированию на C#)

    Демонстрация выполнения левого внешнего соединения в LINQ.

    Практическое руководство. Обработка значений NULL в выражениях запросов (Руководство по программированию в C#)

    Демонстрация обработки значений null в запросах LINQ.

    Copyright MyCorp © 2025
    Сделать бесплатный сайт с uCoz