Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, Serginio1, Вы писали:
I>>>Можешь вписать вместо итд свой пример с монадами
S>>Xml там IQueryable на самом то деле. Смотрим исходники https://referencesource.microsoft.com/#System.Xml.Linq/System/Xml/Linq/XLinq.cs,3354dac0913e417b
I>Сам подумай, что же значит.
S>>и считаем количество yield, что только подтверждает мои выводы
I>Количество yield ничего не значит. IQueryable можно прикрутить поверх чего угодно. А раз так, то это и есть общий случай.
А ну да молодец. То есть все твои примеры используют yield но ты переходишь на IQueryable. Но
IQueryable<out T> : IEnumerable<T>, IQueryable
S>>Что такое RX и WMI даже я не знаю но наверняка итераторы с yield
I>Не знаешь, но мнение имеешь. RX еще назывался linq2events.
S>>Вернее RX я еще помню по использованию в TS. Но и там yield напрополую используются
S>>https://github.com/dotnet/reactive/tree/9f2a8090cea4bf931d4ac3ad071f4df147f4df50/Ix.NET/Source/System.Interactive.Async/System/Linq/Operators
I>Браво, ты узнал, что Обсервер и Итератор дуальны, а раз так, то можно один сводить к другому.
I>Ровно то же можно написать и без yield, с таким же количеством кода.
I>вместо yield a будет observer.next(a)
Дохрена чего можно только это все трудоемко. На том же JS нет нормального Linq
Пишем LINQ на JavaScript с нуля
То, что на C# делается в 2 строчки кода, в других надо писать кучу кода. Поэто в большинстве просто используют List
I>>>IQueryable можно натянуть на что угодно, хоть на коллекции, хоть на базу данных. Потому это гораздо больше похоже на общий случай. А вот IEnumerable это просто последовательность, и даже нужды коллекций покрывает не полностью.
При чем тут IQueryable, слишком дорого его использовать для коллекций и смысла то особого нет, только лишние накладные расходы.
То ты ратуешь за скорость то сам добавляешь дополнительную сложность и тормоза
S>> Кто тебе запрещает писать расширения используя yield?
I>Ок. Покажи пров для mssql на yield. Валяй.
Я тебе уже кучу привел примеров использования yield
S>>IQueryable это вообще деревья выражений. B и обрабатывать их то еще удовольствие.
S>>А yield с парой строчек написал любое расширение!
I>Покажи пров для mssql на yield. Хотя бы идею выдай.
Да легко. Получаешь результаты порциями. Держишь на сервере энумератор. Итд
S>> Да но Linq включает IEnumerable и он основной в использовании. Нахрен он тогда нужен.
I>Ты путаешь "основной" и "общий случай", а так же "yield" и "IEnumerable".
S>>Всякое EF и Linq2DB появились значительно позже хотя IQueryable был. Опять же Expression trees никакого отношения не имеют к IEnumerable, однако ты же согласен, что без него не было бы Linq
I>Без IQueryable не было бы, да. Именно это позволяет прикрутить Linq к чем угодно. А вот yield для BD — хоть раком встань, ничего не выйдет.
Но деревья выражений не использутся для коллекций!!!