Описание тега linq
Этот тег предназначен для вопросов о linq, основанном на.NET DSL (предметно-ориентированном языке), представленном в .net-3.5, для запросов к источникам данных, таким как базы данных, файлы XML или списки объектов в памяти.
При необходимости подумайте об использовании более подробных тегов, например linq-to-sql, linq-to-entity / entity-framework или plinq.
О LINQ
Все источники данных могут быть запрошены с использованием одного и того же, удобочитаемого и простого в использовании синтаксиса - или, скорее, синтаксиса, поскольку LINQ поддерживает две нотации:
Встроенный LINQ или синтаксис запросов, где запросы выражаются на языке, подобном SQL, с диалектами как в C#, так и в VB.NET.
Свободный LINQ или операторы запросов, в которых запросы выражаются в виде лямбда-выражений и могут быть связаны (LINQed?) С использованием свободного синтаксиса.
Все операции запроса LINQ состоят из трех различных действий:
- Получите источник данных.
- Создайте запрос.
- Выполните запрос.
Основные реализации:
Языки.NET: C#, F#, VB.NET
Некоторые примеры:
Свободный синтаксис (C#)
var result = dbContext.Products
.Where(p => p.Category.Name == "Toys" && p.Price >= 2.50)
.Select(p => p.Name);
Синтаксис запроса (C#)
var result = from product in dbContext.Products
where product.Category.Name == "Toys"
where product.Price >= 2.50
select product.Name;
Синтаксис запроса (VB.NET)
Dim result = From product in dbContext.Products _
Where product.Category.Name = "Toys" _
Where product.Price >= 2.50 _
Select product.Name
Этот запрос вернет названия всех продуктов в категории "Игрушки" с ценой не менее 2,50.
Ароматизаторы
LINQ имеет множество разновидностей, наиболее заметными из которых являются
- LINQ to Objects - для запросов к коллекциям POCO (обычные старые объекты CLR).
- LINQ to SQL - для запросов к базам данных SQL.
- LINQ to Entities - для запросов к базам данных SQL через Entity Framework.
- LINQ to XML - для запросов XML-документов.
- PLINQ - для параллельных запросов.
Другие реализации LINQ можно найти в Интернете, например LINQ to SharePoint, LINQ to Twitter, LINQ to CSV, LINQ to Excel, LINQ to JSON и LINQ to Google.
Также доступно множество расширений для LINQ, которые добавляют больше операторов к тем, что предлагает.NET. Многие из них являются проектами с открытым исходным кодом, например MoreLINQ.
Ресурсы
- Статья в Википедии.
- LINQPad - легкий инструмент для создания прототипов.