|
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Описание LINQ02.01.2010, 17:00. Показов 76316. Ответов 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... Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|