- Каковы преимущества и недостатки LINQ (языковой интеграции)?
- Каковы наилучшие и худшие случаи использования LINQ?
- Как вы выиграли или не получили пользу от использования LINQ?
- Какие источники данных выигрывают от наименьшего и максимального из LINQ?
ответ
Я большой поклонник LINQ - хотя его нужно держать в перспективе и не рассматривать как серебряную пулю.
Плюсов:
- декларативный подход делает запросы легче понять и более компактными
- расширяемость и дерева выражений позволяют в основном последовательное запрашивание нескольких источников
- Даже в процессе запросы могут быть реализованы другими способами чем LINQ to Objects - например, Параллельный LINQ и моя собственная структура Push LINQ. Очень гибкий.
- Баснословно полезно в процессе запросов, где это легче понять
- Великий, чтобы иметь возможность избежать SQL в строках и т.д.
- Широкий спектр операторов, предоставляемых по умолчанию, и другие могут быть легко добавлены для LINQ к объектам особенности
- языка введены в первую очередь для LINQ широко применяются в других странах (яй для лямбды)
Минусы:
- Выражения запроса недостаточно понятны и чрезмерно используются. Часто простой вызов метода короче и проще.
- Неизбежные несоответствия между поставщиком - несоответствия импеданса по-прежнему присутствует, который является разумным, но нужно понимать
- Там всегда будут какие-то вещи, которые вы можете сделать в SQL, но не в LINQ
- Не понимая, что происходит, это легко написать очень неэффективный код
- Трудно написать поставщика LINQ. Это может быть неизбежно, но больше рекомендаций от Microsoft будет оценено по достоинству.
- Это новый способ мышления о доступе к данным для большинства разработчиков, и потребуется время для понимания просочиться
- Не конкретно LINQ но связанные с ним - путь методы расширения обнаруживаются в C# не зернистый достаточно
- Некоторые операторы «отсутствуют», в частности эквиваленты
OrderBy
для вещей, отличных от порядка - например найти элемент с максимальным значением свойства - Отложенное выполнение и потоковой передачи плохо понимаемой (но улучшение)
- Отладка может быть очень сложно из-за отсроченного исполнения и потоковое
- В некоторых конкретных случаях, LINQ может быть значительно медленнее, чем ручной код. Чем лучше вы понимаете внутреннюю работу, тем лучше вы сможете это предсказать.(И, конечно, если производительность важна для вас, у вас должны быть соответствующие тесты.)
Я считаю, что лучше всего иметь дело с запросами в процессе. Их легко предсказать, понять и расширить. Дополнительные технологии, такие как LINQ to XML и Parallel LINQ, великолепны. LINQ to Objects можно использовать практически в любом месте.
LINQ to SQL и т. Д. Действительно хороши там, где они подходят, но их сложнее понять и нуждаться в большем количестве знаний. Они также применимы только в определенных областях вашего кода.
Дамба много, но мне все еще нравится – 2008-11-07 07:09:15
Они должны переименовать сайт Skeetoverflow IMO. – cfeduke 2008-11-07 07:20:00
@Nathan: Да, список минусов - это сложная задача, но профессионалы гораздо важнее :) Я пропускаю LINQ все время, когда я пишу на Java :( – 2008-11-07 07:30:26
Моя любимая часть: использование их для упрощения письменных тестов. Кроме того, IEnumerable-цепочки побудили меня писать более плавные интерфейсы в моем коде.
Против: Lambdas и методы расширения - мои молотки, и все проблемы - это гвозди.
В целом: вдохнула новую жизнь в программирование на C# для меня.
Существует проблема с ними из-за кратковременных исключений из блоков catch catch путем задержки выполнения.
, например:
var l = new List<int>() {1, 2, 3};
try
{
l.Select(x => x/0);
}
catch
{
// error
}
l.elementAt(0); // exception occurs here outside of the try catch
который может быть сложен в первый раз, вы столкнетесь с ним, тем более, что отладчик укажет на коде внутри примерки улова.
В противном случае я нахожу их невероятно полезными и очень экономя время.
Я использовал LINQ в основном для работы с коллекцией объектов. LINQ отлично работает с коллекциями объектов, в большинстве случаев устраняя необходимость предикатных функций.
Я попытался использовать LINQ to SQL некоторое время назад, но нашел, что он неудобен и неуклюж. В частности, я не мог заставить себя использовать конструктор классов базы данных SQL. Возможно, это дает intellisense в базе данных, но кому это нужно, когда у вас есть SQL?
Позвольте мне сказать вам, что это действительно хорошая идея, чтобы узнать больше о LINQ, поскольку приложения в будущем должны только увеличиваться.
Pro:
- LINQ к SQL позволяет РАУ с базой данных очень хорошо
- Легко запросить несколько источников данных
- LINQ to SharePoint, LINQ to Active Directory, LINQ to TFS, LINQ to Umbraco, (и далее по списку)
Con:
- Как и любая новой технология слишком многие люди не понимают его, но по-прежнему использовать его
тарелочек - @ Джон еще один большой ответ, вы крадете всякий гром: P. Я полностью согласен с тем, насколько сложно писать провайдер, я сейчас в процессе этого! Вы знакомы с Bart De Smet? У него много хороших примеров.
- 1. LINQ to SQL Inheritance Плюсы и минусы
- 2. Плюсы и минусы READ_COMMITTED_SNAPSHOT
- 3. Плюсы и минусы CodeSmith
- 4. Плюсы и минусы 'inline'
- 5. Плюсы и минусы Java-портлетов?
- 6. Каковы плюсы и минусы TreeSet
- 7. Плюсы и минусы использования раскадровки
- 8. Плюсы и минусы форматирования CSS
- 9. Плюсы и минусы интерпретируемых языков
- 10. UILabel drawTextInRect плюсы и минусы?
- 11. Плюсы и минусы список Swift
- 12. Плюсы и минусы отражения Java?
- 13. Плюсы и минусы обзоров микроданных
- 14. Архитектура ServiceBus Плюсы и минусы
- 15. Каковы плюсы и минусы py2exe
- 16. Фотон VMware плюсы и минусы
- 17. Плюсы и минусы async/wait
- 18. MySQL вызывает плюсы и минусы
- 19. Плюсы и минусы использования ADO.Net сущность модели
- 20. используя ≠ как! = Плюсы/минусы
- 21. SELECT * - плюсы/минусы
- 22. Какие плюсы и минусы используют LINQ to SQL?
- 23. Плюсы/минусы встроенных сценариев?
- 24. Плюсы и минусы с автоматическим/ручным кэшем
- 25. Плюсы и минусы сортировки данных в БД?
- 26. Плюсы и минусы tkinter и wxWidgets?
- 27. Каковы плюсы и минусы активов_packager и Jammit?
- 28. Плюсы и минусы для Haxe и Kivy
- 29. Плюсы и минусы DFC и DFS?
- 30. Параллельные методы программирования, плюсы, минусы
Кажется хорошим кандидатом на вопрос сообщества Wiki – 2008-11-07 06:42:33