Что такое LINQ и что он делает? [закрытый]


Что такое LINQ? Я знаю, что это для баз данных, но что он делает?

7 101

7 ответов:

LINQ расшифровывается как Язык Интегрированных Запросов.

вместо того, чтобы писать YAQL (еще один язык запросов), разработчики языка Microsoft предоставили способ выражения запросов непосредственно на своих языках (таких как C# и Visual Basic). Методы формирования этих запросов не зависят от деталей реализации запрашиваемой вещи, поэтому вы можете писать допустимые запросы для многих целей (базы данных, объекты в памяти, XML) с помощью практически не учитывается основной способ выполнения запроса.

давайте начнем это исследование с частей, принадлежащих .NET Framework (3.5).

  • LINQ to Objects-examine

LINQ (Language INtegrated Query) может ссылаться на:

  • библиотека для сбора и обработки итераторов, которая широко использует функции более высокого порядка в качестве аргументов (System.Linq)

  • библиотека для передачи и манипулирования простыми функциями в виде абстрактных синтаксических деревьев (System.В LINQ.Выражения)

  • расширение синтаксиса для различных языков, чтобы обеспечить более SQL-подобный синтаксис для обработки коллекций, a более компактная нотация для анонимных функций и механизм для введения статических вспомогательных функций, синтаксически неотличимых от конечных функций-членов

  • определение интерфейса, которому могут соответствовать поставщики данных, чтобы получить структуру запроса и потенциально выполнить оптимизацию на нем, или иногда сами совместимые поставщики данных

компоненты могут использоваться изолированно или в сочетании.

в двух словах, LINQ (Language-Integrated Query) позволяет писать запросы непосредственно в коде. Эти запросы могут относиться к реляционным базам данных, а также к объектам XML или контейнеров в памяти, таким как массивы и списки. Дополнительная информация доступна в библиотеке MSDN:http://msdn.microsoft.com/en-us/library/bb308959.aspx

Я попытаюсь найти простой ответ: LINQ-это способ запроса вашей базы данных (или другого хранилища данных, XML и т. д.) с использованием языка запросов, который похож на SQL, но может быть скомпилирован внутри приложения .NET.

LINQ означает Язык Интегрированных Запросов, и является способом предоставления механизма "запроса" общего назначения в среде CLR.

на самом базовом уровне это состоит из набора методов на IEnumerable - например. Выберите сумму, где - то может быть использовано для ограничения, проекции и т. д.[1]

чтобы сделать это немного дальше, LINQ также определяет новую модель поставщика LINQ, которая может принимать дерево выражений и использовать его для выполнения "собственных" запросов к a источник данных вне среды CLR-например., LINQ to SQL, LINQ to XML, LINQ to NHibernate и др.

C# и VB.NET также был определен синтаксис запроса, который позволяет писать строго типизированные запросы inline (что очень похоже на SQL), которые компилятор затем переводит в эквивалентные вызовы IEnumerable.

для меня самое интересное в LINQ-это все C# и VB.NET функции, которые были необходимы для его поддержки, полезны сами по себе. Метод расширения, анонимные типы, лямбда - выражения и неявная типизация были необходимы для поддержки LINQ, но мы склонны использовать эти функции вне чистого контекста LINQ.

[1] это реляционные термины, функциональные программисты, вероятно, предпочтут Map, Reduce, Fold и т. д.

LINQ-это технология извлечения данных с использованием идиомы, полученной из языка программирования C#. Хотя он многим обязан функциональному дизайну SQL, это в основном его собственный язык запросов данных. Он работает с широким спектром источников данных (базы данных SQL, представления в памяти, XML и т. д.). LINQ-to-SQL, в частности, следует рассматривать как контраст с традиционным использованием встроенного SQL, который страдает от того, что часто называют "несоответствием импеданса" между Программирование SQL и Программирование C#/VB.

для обсуждения LINQ и его ограничений, вы можете взглянуть на этот связанный вопрос:разве LINQ to SQL не упускает суть?

http://msdn.microsoft.com/en-us/netframework/aa904594.aspx

"проект LINQ-это кодовое имя для набора расширений платформы .NET Framework, которые включают операции запроса, набора и преобразования, интегрированные в язык. Он расширяет C# и Visual Basic с синтаксисом родного языка для запросов и предоставляет библиотеки классов, чтобы воспользоваться этими возможностями."