Language Integrated Query (LINQ) - это компонент Microsoft .NET Framework, который добавляет в языки.NET встроенные возможности запроса данных. При необходимости подумайте об использовании более подробных тегов, например [linq-to-sql], [linq-to-entity] / [entity-framework] или [plinq]

Этот тег предназначен для вопросов о 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 состоят из трех различных действий:

  1. Получите источник данных.
  2. Создайте запрос.
  3. Выполните запрос.

Основные реализации:

Языки.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.

Ресурсы