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. Выполнить запрос.

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

Некоторые примеры:

Свободный синтаксис (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- для параллельных запросов.

Ресурсы