Изучение LINQ [on hold]


обзор

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

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

Что такое LINQ?

С MSDN:

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

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

какие ароматы LINQ существуют?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

этот вопрос имеет некоторые хитрые способы использования LINQ

10 184

10 ответов:

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

давайте тоже не забудем LinqPad :)

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

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

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

  • применение фильтров перед соединением для повышения производительности запроса
  • фильтровать запросы LINQ с помощью сравнения ссылок на объекты
  • применить агрегаты к пустым коллекциям в LINQ to SQL queries
  • задержка загрузки свойства в LINQ to SQL
  • используйте табличные функции с включенной активной загрузкой
  • поместите соединения в правильном порядке в запросе LINQ to Objects
  • составить запрос LINQ внутри петли

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

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

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

действительно ли Microsoft убила LINQ to SQL?

является ли LINQ to SQL DOA?

кроме того,споры о первой версии Entity Framework, включая ходатайство.

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

вот список существующих поставщиков LINQ (плюс еще несколько ресурсов по обучению LINQ) в блоге Чарли Калверта: ссылки на LINQ.

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

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

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

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

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

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

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