|
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Описание LINQ02.01.2010, 17:00. Показов 76445. Ответов 1
Метки нет (Все метки)
LINQ - Language Integrated Query - Язык Интегрированных Запросов
LINQ — это набор расширений языка, поддерживающий формирование запросов данных с контролем типов LINQ предоставляет два вида запросов: локальные (для локальных коллекций) и интерпретируемые (для удаленных источников данных) Базовые единицы данных в LINQ - последовательности. Последовательность, - любая коллекция, реализующая интерфейс IEnumerable<> или IQueryable<>. Оператор запроса - метод, преобразующий последовательность. Запрос - выражение, которое преобразует последовательность с помощью операторов запроса. Оператор запроса никогда не изменяет входную последовательность, вместо этого он возвращает новую. Для использования LINQ необходимо подключить пространство имен System.Linq и наличие Framework 3.5 или выше Синтаксис LINQ поддерживает два вида синтаксиса: синтаксис запросов и синтаксис методов Синтаксис запросов:
Синтаксис методов:
Методы можно применять один за другим:
Выберем из массива строк уникальные строки, содержащие "cyber" и упорядочим их по длинне
Ключевые слова синтаксиса запросов
from - Указание источника данных и переменной диапазона (аналогично переменной итерации).
where - Фильтрация исходных элементов на основе одного или нескольких логических выражений, разделенных операторами AND и OR ( && или || ). select - Указание типа и формы, которую будут иметь элементы в возвращенной последовательности при выполнении запроса. group - Группировка результатов запроса по заданному ключевому значению. into - Предоставление идентификатора, который может служить ссылкой на результаты предложения join, group или select. orderby - Сортировка результатов запроса по возрастанию или убыванию в компараторе по умолчанию для типа элемента. join - Соединение двух источников данных на основе вычисления равенства между двумя заданными парными критериями. let - Ввод переменной диапазона для хранения результатов вложенного выражения в выражении запроса. in - Контекстно-зависимое ключевое слово в предложении join. on - Контекстно-зависимое ключевое слово в предложении join. equals - Контекстно-зависимое ключевое слово в предложении join. by - Контекстно-зависимое ключевое слово в предложении group. ascending - Контекстно-зависимое ключевое слово в предложении orderby. descending - Контекстно-зависимое ключевое слово в предложении orderby. Ключевые слова синтаксиса методов
Объединение
Aggregate - Применяет к последовательности пользовательский метод. Average - Вычисляет среднее для числовой последовательности. Count - Возвращает количество элементов в последовательности (целочисленное значение). LongCount - Возвращает количество элементов в последовательности (значение в диапазоне LongInt). Min - Возвращает наименьшее значение для числовой последовательности. Max - Возвращает наибольшее значение для числовой последовательности. Sum - Складывает члены числовой последовательности. Конкатенация Concat - Соединяет две последовательности в одну. Преобразование Cast - Преобразует элементы последовательности в элемены указанного типа. OfType - Выбирает из элементов последовательности элемены указанного типа. ToArray - Возвращает массив из элементов последовательности. ToDictionary - Возвращает словарь из элементов последовательности. ToList - Возвращает список из элементов последовательности. ToLookup - Возвращает результаты поиска по последовательности. ToSequence - Возвращает последовательность IEnumerable. Элемент DefaultIfEmpty - Создает стандартный элемент для пустой последовательности. ElementAt - Возвращает элемент последовательности по указанному индексу. ElementAtOrDefault - Возвращает элемент по указанному индексу или стандартный элемент (если индекс вышел за пределы диапазона). First - Возвращает первый элемент последовательности. FirstOrDefault - Возвращает первый элемент последовательности или стандартный элемент (если нужный элемент не найден). Last - Возвращает последний элемент последовательности. LastOrDefault - Возвращает последний элемент последовательности или стандартный элемент (если нужный элемент не найден). Single - Возвращает единственный элемент последовательности. SingleOrDefault - Возвращает единственный элемент последовательности или стандартный элемент (если нужный элемент не найден). Равенство SequenceEqual - Проверяет эквивалентность двух последовательностей. Создание Empty - Создает пустую последовательность. Range - Создает последовательность в соответствии с заданным диапазоном. Repeat - Создает последовательность, повторяя значение заданное количество раз. Группировка GroupBy - Группирует элементы последовательности указанным образом. Присоединение GroupJoin - Выполняет группированное соединение двух последовательностей. Join - Выполняет внутреннее соединение двух последовательностей. Упорядочение OrderBy - Упорядочивает элементы последовательности по заданным значениям в порядке возрастания. OrderByDescending - Упорядочивает элементы последовательности по заданным значениям в порядке убывания. ThenBy - Упорядочивает элементы уже упорядоченной последовательности в порядке возрастания. ThenByDescending - Упорядочивает элементы уже упорядоченной последовательности в порядке убывания. Reverse - Зеркально отображает порядок расположения элементов в последовательности. Разделение на части Skip - Возвращает последовательность, в которой указанное число элементов пропущено. SkipWhile - Возвращает последовательность, в которой пропущены элементы, не соответствующие указанному условию. Take - Возвращает последовательность, в которую включается указанное число элементов. TakeWhile - Возвращает последовательность, в которую включаются элементы, соответствующие указанному условию. Проекция Select - Создает проекцию части последовательности. SelectMany - Создает проекцию части последовательности по принципу «один ко многим». Кванторы All - Определяет соответствие всех элементов последовательности указанным условиям. Any - Определяет, есть ли в последовательность элементы, удовлетворяющие указанным условиям. Contains - Определяет, есть ли в последовательности указанный элемент. Ограничение Where - Сортирует члены последовательности. Множества Distinct - Возвращает последовательность без повторяющихся элементов. Except - Возвращает последовательность, представляющую собой разность двух других последовательностей. Intersect - Возвращает последовательность, представляющую собой пересечение двух других последовательностей. Union - Возвращает последовательность, представляющую собой объединение двух других последовательностей. Лямбда-выражения Лямбда-выражения - это специальный синтаксис для сокращённого объявления анонимных методов. Пример синтаксиса: n => n * n Это выражение принимает один параметр (n) и возвращает n * n. Пример использования:
Слева от лямбда оператора стоят параметры ввода, справа - выражение Это лямбда-выражение эквивалентно такому: n => { return n * n; } и такому delegate(int n) { return n * n; } Стандартные операторы запроса используют обобщенные делегаты Func, например Func<int, bool> соответствует лямбда-выражению int => bool, а Func<string, string, int> - (string, string) => int Возвращаемое значение Func всегда указывается в качестве последнего аргумента. В лямбда-выражения можно использовать внешние переменные:
Анонимные типы Переменные, объявленные внутри метода могут иметь неявный тип var. Локальная переменная с неявным типом имеет строгую типизацию, как если бы тип был задан явно, только тип определяет компилятор. Например
Удалить из массива слов все гласные, сохранив при этом оригинальное слово
Отложенное выполнение Большая часть операторов запроса выполняется не при конструировании, а только при переборе элементов. Пример:
Повторное выполнение Запрос с отложенным выполнение выполняется повторно при повторном переборе элементов Пример:
Расширяющие методы Поскольку все операторы запроса реализованы ввиде расширяющих методов, можно легко добавить собственные Несколько примеров расширяющих методов для LINQ 1
Метод, обратный методу Where, возвращает последовательность, элементы которой не удовлетворяют предикату
2
Метод, возвращающий последовательность от и до определенных индексов
3
Метод возвращающий индекс предпоследнего элемента
Несколько примеров запросов LINQ to Objects Частотный анализ текста
Частотный анализ текста
Быстрая сортировка
Быстрая сортировка
101 LINQ Samples LINQ Samples Позже добавлю про подзапросы, linq to xml и linq to sql Если где не прав - поправьте, что забыл - добавьте
119
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 02.01.2010, 17:00 | |
|
Ответы с готовыми решениями:
1
Почему LINQ to Entity содержит не все методы LINQ to Objects? Ускорение Linq to SQL (Compiled Linq, Entity SQL, и т.д.) |
| 23.08.2015, 15:15 | |||||||
0
|
|||||||
| 23.08.2015, 15:15 | |
|
Помогаю со студенческими работами здесь
2
Linq To Entities - String To Int. "Выражению LINQ to Entities не удается распознать метод "Int32 ."
Linq или не Linq. Linq медленней стандартных методов? Литература по EntityFramework, WCF, Linq to Objects, и Linq to SQL LINQ to Interbase/Firebird и вообще LINQ to... Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|