Изучение LINQ

Обзор

Одна из вещей, о которых я много просил на этом сайте, - LINQ. Вопросы, которые я задал, были широкими и разнообразными и часто не имеют большого контекста. Поэтому, пытаясь консолидировать знания, полученные мной в Linq, я отправляю этот вопрос, чтобы сохранить и обновить его с дополнительной информацией, поскольку я продолжаю узнавать о LINQ.

Я также надеюсь, что он окажется полезным ресурсом для других людей, желающих узнать о LINQ.

Что такое LINQ?

Из MSDN:

Проект LINQ - это кодовое имя для набор расширений для .NET. Рамки, охватывающие язык, интегрированный запрос, набор и преобразования. Он расширяет С# и Visual Basic с родным языком синтаксис запросов и предоставляет класс библиотеки, чтобы воспользоваться этими возможности.

Это означает, что LINQ предоставляет стандартный способ запроса различных источников данных с использованием общего синтаксиса.

Какие существуют особенности LINQ?

В настоящее время существует несколько различных поставщиков LINQ, предоставляемых Microsoft:

  • Linq to Objects, который позволяет выполнять запросы для любого объекта IEnumerable.
  • Linq to SQL, который позволяет выполнять запросы к базе данных объектно-ориентированным образом.
  • Linq to XML, который позволяет вам запрашивать, загружать, проверять, сериализовывать и обрабатывать XML-документы.
  • Linq to Entities, как предложено Andrei
  • Linq to Dataset

Есть немало других, многие из которых перечислены здесь.

Каковы преимущества?

  • Стандартизованный способ запроса нескольких источников данных
  • Защита запросов времени компиляции
  • Оптимизированный способ выполнения операций на основе набора в объектах памяти
  • Возможность отладки запросов

Итак, что я могу сделать с LINQ?

Chook предоставляет способ выводить файлы CSV
Jeff показывает, как удалить дубликаты из массива
Боб получает отличный упорядоченный список из datatable
Marxidad показывает, как сортировать массив
Дана получает помощь в реализации быстрого сортировки с использованием Linq

С чего начать?

Сводка ссылок из вопроса GateKiller ниже:
Скотт Гатри предоставляет введение Linq в свой блог
Обзор LINQ на MSDN

ChrisAnnODell предлагает проверить:

Что мне нужно использовать LINQ?

Linq в настоящее время доступен в VB.Net 9.0 и С# 3.0, поэтому вам понадобится Visual Studio 2008 или выше, чтобы получить все преимущества. (Вы всегда можете написать свой код в блокноте и скомпилировать его с помощью MSBuild)

Существует также инструмент под названием LinqBridge, который позволит вам запускать запросы Linq, подобные запросам на С# 2.0.

Советы и рекомендации с помощью LINQ

Этот вопрос содержит несколько сложных способов использования LINQ

Ответ 1

Вот 101 образцов Linq, которые являются отличной ссылкой, если вы просто хотите быстрый синтаксический пример.

Давайте также не забываем LinqPad:)

Ответ 3

Упоминание LINQ для сущностей с ADO.NET Entity Framework будет важным .NET-модулем.

Ответ 4

Получить книгу Linq в действии, это легко прочитать для книги кодирования и действительно учит вас, как использовать Linq и новые возможности .NET 3.5, некоторые из классных частей, которые они вставляют язык.

Ответ 6

Несколько советов LINQ:

  • Применить фильтры перед соединением для повышения эффективности запросов
  • Фильтровать запросы LINQ с использованием сравнения эталонных объектов
  • Применить агрегаты для пустых коллекций в запросах LINQ to SQL
  • Задержка загрузки свойства в LINQ to SQL
  • Использовать табличные функции с включенной загрузкой
  • Поместите соединения в правильном порядке в запросе LINQ to Objects
  • Составить запрос LINQ внутри цикла

http://www.aspnetpro.com/articles/2009/04/asp200904zh_f/asp200904zh_f.asp

Ответ 7

IMHO, упущенная, но важная польза - эффективность кодирования LINQ, например, сколько можно сделать с таким маленьким кодом. Я лично считаю, что синтаксис запроса легко читается и понимается.

Ответ 8

Я думаю, ответ на вопрос: "Какие вкусы LINQ есть?" является неполным. Прежде всего, вы можете создать свой собственный "вкус". Да, это расширенная задача, но сейчас существует множество различных реализаций LINQ.

Вот список существующих поставщиков LINQ (плюс еще несколько ресурсов по изучению LINQ) в блоге Charlie Calvert: Ссылки на LINQ.

А также есть замечательная серия сообщений блога Мэтта Уоррена о том, как создать свой собственный поставщик LINQ: LINQ: создание серии поставщиков IQueryable

Ответ 9

Мои 2 цента, прочитайте главы "11 выражений запроса и LINQ to Objects" и "12 LINQ за коллекциями" в книге "С# в глубине", чтобы понять, как работает LINQ.

Ответ 10

Для практики Linq

Если вам нужна какая-то практика в LINQ с упражнениями и ответами, очень легко настроить и, на мой взгляд, потрясающе:

https://github.com/walkhard/linq-exercises

Загрузить с git, открыть в Visual Studio. Ваша задача - пройти тесты.

[раскрытие: я узнал от него некоторый linq, и я вношу свой вклад в проект, поэтому да, я думаю, что это потрясающий, быстрый и эффективный способ узнать.]