|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Иван215Но этот лямбда синтаксис... Сжигает остатки мозга.Надо было в институте алгебру, матан, матлогику и прочее посещать, иммунитет бы выработался :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 08:39 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Еще один умник. Все сие посещал и прекрасно успевал по этим предметам + Общая Алгебра + Аналитическая геометрия + Теория Функций комплексного переменного + Дискретная математика + Функциональный анализ + Теория Вероятностей + продолжать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 11:46 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Иван215продолжать?Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 11:58 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Иван215А кстати, не подскажете, что делает метод .AsEnumerable. Формально, конечно, можно писать его и не задумываясь, или просто полагая, что он DataTable преобразует в нечто съедобное для LINQ - то есть в реализацию интерфейса IENumerable. Но все-таки любопытно, что он делает на самом деле Код: vbnet 1.
Вообще, LINQ сам по себе позволяет выполнять часто встречающиеся операции над множествами (списками/перечислениями/наборами) некоторых, вообще говоря однотипных элементов. Поиск, фильтрация, группировка, преобразование и т. д. По сути сами алгоритмы эти не зависят не от структуры ни множеств, ни самих элементов. Вот LINQ и реализует эти алгоритмы, например для операции фильтрации нам нужно лишь условие фильтра и оно будет использоваться в любом случае. В императивном (интуитивно понятном) алгоритме, мы будем в цикле проходить один набор данных, смотреть, удовлетворяет ли текущий элемент фильтру и если да, засовывать его во временный контейнер, последний и будет результатом. В LINQ же, нам достаточно просто передать в метод where функцию фильтрации и мы получим аналогичный результат. Но в первом случае, мы будем писать больше кода, что чревато большими затратами времени и большим количеством ошибок. И все это счастье нам будет если используемый контейнер всего навсего реализует IEnumerable, (вообще говоря IEnumerator). Но DataTable сделали при царе Горохе, когда матерые программисты с 26 летним стажем были совсем зелеными юнцами с 10 летним стажем и когда не было LINQ. Конкретно AsEnumerable у DataTable сделали для красоты, эквивалентная конструкция Код: c# 1.
Но про Cast редкий программист знает, не зависимо от стажа. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 12:08 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Тут еще может возникнуть путаница с DataTable.AsEnumerable() (я бы назвал ToEnumerable), это очень похоже на IEnumerable.AsEnumerable(), реализация которого делает ровно то, что возвращает переданный аргумент. Полная чушь конечно! Если бы не одно но! Интерфейсу IEnumerable наследует IQueryable, который имеет методы расширения аналогичные IEnumerable, которые принимают не делегаты, а деревья выражений. То есть вызов AsEnumerable() для IQueryable позволит передать выполнение дальнейших действий методам расширения для IEnumerable. А вызов AsQueryable для IEnumerable позволит использовать деревья выражений, которые вообще говоря можно сформировать во время исполнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 12:28 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВНо про Cast редкий программист знает, не зависимо от стажа. Это шутка? Это же основы LINQ. Самые-самые. Вообще меня удивляют слова ТС об огромном стаже и великолепной успеваемости по всем предметам. ToList() - это замечательно, очень полезная функция, но отнюдь не универсальная. В целом сказано все правильно - "разные типы - разная обработка". Либо создайте один тип и с ним работайте. Эти плюшки в виде анонимных типов для тех, кто понимает, что это такое и не задает глупых вопросов. При этом не нужно даже знать LINQ, чтобы понимать базовые вещи. А то так можно и до рефлексии дойти, чтобы у разных классов сравнивать одинаковые свойства. ТС, если вам нужно проверять только Count - вычислите только его. Если у Вас есть набор нужных полей - создайте класс, и пишите в него через LINQ. У Вас не будет никаких сложностей. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 13:22 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Иван215Еще один умник. Все сие посещал и прекрасно успевал по этим предметам + Общая Алгебра + Аналитическая геометрия + Теория Функций комплексного переменного + Дискретная математика + Функциональный анализ + Теория Вероятностей + продолжать?Расслабься. Шуток не понимаешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 14:58 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
AddxЕвгенийВНо про Cast редкий программист знает, не зависимо от стажа. Это шутка? Это же основы LINQ. Самые-самые. Не шутка, действительно многие не знают. А про основы шутка? Я то всегда полагал, что LINQ зиждется на примесях, функциях высшего порядка, лямбдах, анонимных типах и автоматическом выводе типов... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 16:20 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Иван215Еще один умник. Все сие посещал и прекрасно успевал по этим предметам + Общая Алгебра + Аналитическая геометрия + Теория Функций комплексного переменного + Дискретная математика + Функциональный анализ + Теория Вероятностей + продолжать? А в чем тогда затык? Банальный определенный интеграл можно понимать как функцию высшего порядка, которая принимает функцию первого порядка в качестве аргумента. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 16:26 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВAddxпропущено... Это шутка? Это же основы LINQ. Самые-самые. Не шутка, действительно многие не знают. А про основы шутка? Я то всегда полагал, что LINQ зиждется на примесях, функциях высшего порядка, лямбдах, анонимных типах и автоматическом выводе типов... Многие и LINQ не знают, но Cast - это основа. Насчет "примесей" ;) не знаю, но LINQ ни в коем случае не держится на анонимных типах и лямбдах. LINQ - расширенный набор методов для манипуляции коллекциями (IEnumerable, IQueryble) и прекрасно работает без анонимных типов и лямбд. Иногда пользоваться анонимными типами просто вредно. Например, Код: c# 1.
коллекция типа MyType без всякой анонимности. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 17:02 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Addx LINQ - расширенный набор методов для манипуляции коллекциями (IEnumerable, IQueryble) и прекрасно работает без анонимных типов и лямбд. Вот что бы этот "расширенный набор" работал, нужны примеси, вывод типов, анонимные типы и лямбды. Попробуй в LinqToSql например передать не лямбду, но функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 17:19 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВAddx LINQ - расширенный набор методов для манипуляции коллекциями (IEnumerable, IQueryble) и прекрасно работает без анонимных типов и лямбд. Вот что бы этот "расширенный набор" работал, нужны примеси, вывод типов, анонимные типы и лямбды. Попробуй в LinqToSql например передать не лямбду, но функцию. Давайте не будет смешивать. Я написал в первую очередь про анонимные типы. Я написал, что если ты не понимаешь сути - то это зло. Судя по всему, понимают немногие. При чем тут LinqToSQL я вообще не понял. В чем его такая принципиальная особенность? Куда и что нужно передать? Лямбда-выражения не имеют никакого отношения к Linq вообще. Они активно используются вне Linq и не являются чем-то новым. Приведите пример в LinqToSQL, где без "лямбды" обойтись нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 17:29 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВВот что бы этот "расширенный набор" работал, нужны примеси, вывод типов, анонимные типы и лямбды.можно прекрасно работать с Linq без всего этого. ЕвгенийВПопробуй в LinqToSql например передать не лямбду, но функцию.В чем проблема? объявить Func или Expression вне метода Linq и передать ему как параметр. Без лямбд. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 17:31 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВВот что бы этот "расширенный набор" работал, ..., вывод типов, анонимные типы ... Я привел пример того, что анонимные типы не нужны, Вы его проигнорировали. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 17:32 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Shocker.Proможно прекрасно работать с Linq без всего этого. Вы знали! Ну вот, а такая была интрига. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 17:35 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Shocker.ProЕвгенийВВот что бы этот "расширенный набор" работал, нужны примеси, вывод типов, анонимные типы и лямбды.можно прекрасно работать с Linq без всего этого. отправляю вас к поделке Сережи Брина с вопросом "что нового в .Net Framework 3,5" Shocker.ProЕвгенийВПопробуй в LinqToSql например передать не лямбду, но функцию.В чем проблема? объявить Func или Expression вне метода Linq и передать ему как параметр. Без лямбд. 1. Queryable примет делегат и станет Enumerable , Enumerable не примет Expression. Но оба примут идентичные лямбды. 2. Если Queryable будет транслировать запрос, например sql server`у, то в момент исполнения начнет материться. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 17:56 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВ1. Queryable примет делегат и станет Enumerable , Enumerable не примет Expression.А нефиг Queryable кормить делегатами, он не для тогоЕвгенийВНо оба примут идентичные лямбды.И что с того? Я и не спорил, что лямбда - удобная штука. ЕвгенийВ2. Если Queryable будет транслировать запрос, например sql server`у, то в момент исполнения начнет материться.Не знаю, как у тебя, я прекрасно конструировал выражения самостоятельно и они прекрасно транслировались в SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:02 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
И как раз-таки совет использовать .ToList(), данный автору топика, вреден по этой причине. В данном случае прокатит, но когда он начнет работать с IQueryable - аукнется. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:06 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВотправляю вас к поделке Сережи Брина с вопросом "что нового в .Net Framework 3,5" Да Вы шо? Уже .Net 3.5 вышел? ))) А мужики-то и не знали) Понимаете, тут есть люди которые не только книги прочли, но и вникли в суть и применяли все это на практике. ЕвгенийВ1. Queryable примет делегат и станет Enumerable , Enumerable не примет Expression. Но оба примут идентичные лямбды. 2. Если Queryable будет транслировать запрос, например sql server`у, то в момент исполнения начнет материться. Приведите пример, когда без лямбды не обойтись. Раз уж Вы чужие примеры игнорируете. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:13 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Shocker.ProНе знаю, как у тебя, я прекрасно конструировал выражения самостоятельно и они прекрасно транслировались в SQL Примерчик можно с вызовом самописной функции? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:25 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВПримерчик можно с вызовом самописной функции?ты для самообразования или чтобы попридираться? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:29 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВПримерчик можно с вызовом самописной функции?вот, кстати, нашел простейший пример var linq и динамические условия ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:37 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
AddxЕвгенийВотправляю вас к поделке Сережи Брина с вопросом "что нового в .Net Framework 3,5" Да Вы шо? Уже .Net 3.5 вышел? ))) А мужики-то и не знали) Понимаете, тут есть люди которые не только книги прочли, но и вникли в суть и применяли все это на практике. Раз вам лень, я для вас нашел. http://storage.piter.com/upload/contents/978591180518/978591180518_p.pdf https://msdn.microsoft.com/ru-ru/library/bb332048(v=vs.90).aspx LINQ появившийся в .net 3.5 невозможен без примесей, лямбд, вывода типов, анонимных типов, появившихся в c# 3.0 специально да LINQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:42 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
Shocker.ProЕвгенийВПримерчик можно с вызовом самописной функции?вот, кстати, нашел простейший пример var linq и динамические условия Это динамически построенное дерево выражений, а я просил самописную функцию, типа Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:44 |
|
Выполнение LINQ-запроса внутри условного оператора
|
|||
---|---|---|---|
#18+
ЕвгенийВLINQ появившийся в .net 3.5 невозможен без примесей, лямбд, вывода типов, анонимных типов, появившихся в c# 3.0 специально да LINQ. Вы читаете только самого себя? "Сталин читает Сталина" (с) Или это мантра такая? Приведите пример. Иначе все это балабольство. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2016, 18:49 |
|
|
start [/forum/moderation_log.php?user_name=bce_ok]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 439ms |
total: | 731ms |
0 / 0 |