powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ: кто какой синтаксис использует?
25 сообщений из 222, страница 3 из 9
LINQ: кто какой синтаксис использует?
    #38871622
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserЭто кривой запрос или так надо писать по техническим причинам?

Да я просто скопипастил пример с инета, главное показать количество джойнов, подобное приходится иногда делать, не часто, но иногда.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871636
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВIlya81О .Net'овском, который по идее должен обрабатывать в т. ч. механизм отложенных запросов, в т. ч. для классов Enumerable и ParallelEnumerable.
Такого пока не придумали :)
В смысле? Если зайти отладчиком в release'ный модуль, то часто можно наткнуться на то, что оптимизатор выкинул этот оператор, переменную и т. п.. А отложенные запросы, насколько я знаю, для того и сделаны отложенными, что только так есть возможность оптимизировать весь запрос, а не отдельные его элементы.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871651
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81В смысле? Если зайти отладчиком в release'ный модуль, то часто можно наткнуться на то, что оптимизатор выкинул этот оператор, переменную и т. п..
Это оптимизации компилятора. Он заботиться об экономии памяти и увеличении быстродействия. Но он не делает логических оптимизаций, задача будет решаться именно так, как описал программист.
СУБД же будет пытаться найти наилучший план исполнения запроса основываясь на индексах и статистике.
Ilya81 А отложенные запросы, насколько я знаю, для того и сделаны отложенными, что только так есть возможность оптимизировать весь запрос, а не отдельные его элементы.
А суть отложенного(ленивого) выполнения кода в том, что он не будет исполняться, пока кто то не запросит результат его выполнения.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871654
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВIlya81В смысле? Если зайти отладчиком в release'ный модуль, то часто можно наткнуться на то, что оптимизатор выкинул этот оператор, переменную и т. п..
Это оптимизации компилятора. Он заботиться об экономии памяти и увеличении быстродействия. Но он не делает логических оптимизаций, задача будет решаться именно так, как описал программист.
СУБД же будет пытаться найти наилучший план исполнения запроса основываясь на индексах и статистике.
Ilya81 А отложенные запросы, насколько я знаю, для того и сделаны отложенными, что только так есть возможность оптимизировать весь запрос, а не отдельные его элементы.
А суть отложенного(ленивого) выполнения кода в том, что он не будет исполняться, пока кто то не запросит результат его выполнения.
Ну не просто ж ради забавы запросы в LINQ сделаны отложенными. Но, в то ж время, для меня это является правилом, что на оптимизатор надейся, а сам... пиши уже с оптимизацией, если это только не снижает maintenability.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871671
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81Ну не просто ж ради забавы запросы в LINQ сделаны отложенными. Но, в то ж время, для меня это является правилом, что на оптимизатор надейся, а сам... пиши уже с оптимизацией, если это только не снижает maintenability.
Ленивые вычисления дают возможность писать например такой код.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public static IEnumerable<int> GetInts()
        {
            var r =new Random();
            while (true)
            {
                yield return r.Next(1, 1000);
            }
        }
        private static void Main(string[] args)
        {

            var data = GetInts().Skip(1000).Take(200).Where(x => x > 500);
            foreach (var i in data)
            {
                Console.WriteLine(i);
            }

            Console.ReadLine();
        }


С интенсивными вычислениями такого бы не получилось.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871703
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВС интенсивными вычислениями такого бы не получилось.

Круть.
Пришлось погонять код - чтобы понять, кто кого "Skip".
До меня сразу не дошло.
:-)

Осталось только дождаться бизнес задачи, когда надо будет пропускать заранее известное количество строк или еще чего и только потом "Take" опять же известное количество строк...

:-)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871804
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129ЕвгенийВС интенсивными вычислениями такого бы не получилось.

Круть.
Пришлось погонять код - чтобы понять, кто кого "Skip".
До меня сразу не дошло.
:-)

Осталось только дождаться бизнес задачи, когда надо будет пропускать заранее известное количество строк или еще чего и только потом "Take" опять же известное количество строк...

:-)


А че её дожидаться - pagination
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871915
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonochromatiqueА че её дожидаться - pagination
Строго говоря, это больше отображение...
Делал однажды постраничную прокрутку сам...
Потом купили контролы - и я заменил самописный "смарт грид" на покупной. Он гораздо круче.


В бизнесе я с трудом представляю пропуск N первых записей в транзакции продаж или учете чего-либо...
Чаще ищещь что-то конкретное - это да.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871953
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЛенивые вычисления дают возможность писать например такой код.
...
С интенсивными вычислениями такого бы не получилось.
Именно такие вещи я и называл оптимизацией, т. е. стоит Skip - результат не вычисляется, стоит Take - берётся столько, сколько запрошено. Другое дело, насколько этот оптимизатор развит в текущей версии .Net runtime, и осилит ли он определить нечто посложнее, скажем, что какое-то условие в Where является тавтологией и его можно выкинуть, или что условие уже сразу отсечёт кучу записей при выборке. Но моё мнение, на оптимизатор слишком надеяться не стоит и лучше не добавлять бессмысленные логические выражения, фильтрацию выполнять насколько возможно перед другими действиями и т. п., т. е. писать уже насколько возможно оптимизированный вариант.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871960
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81,
Учите матчасть !
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871965
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВIlya81,
Учите матчасть !
Посмотрю, а то я, действительно, всё не мог собраться поизучать подробности способа выполнения отложенных запросов.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873526
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня как у начинающего возникает вопрос почему между Fluent и Lambda expressions ставиться равенство.

и тут возникает 2 вещи: разрыв шаблона в голове и два вопроса.

Fluent API для настройки свойств. По написанию схож с Lambda expressions по смыслу рядом не стоит не с ним не с LINQ.

Q1: Это так?

Lambda expressions часть библиотеки LINQ

Q2: это так?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873527
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве кто-то что-то говорил тут про Fluent API?
https://translate.google.com/#en/ru/fluent
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873656
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем Gу меня как у начинающего возникает вопрос почему между Fluent и Lambda expressions ставиться равенство.
Где вы это увидели?
Артем GFluent API для настройки свойств.
Это кто такое постановил?
Артем GПо написанию схож с Lambda expressions
Аналогично тому, как схожи бегемот и таракан.
Артем Gпо смыслу рядом не стоит не с ним не с LINQ.
Q1: Это так?
Последнее процитированное - да. Остальное - нет.
Артем GLambda expressions часть библиотеки LINQ
Q2: это так?
Нет.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873693
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по поводу флюента и кто говорил. прям во втором посте и написано и далее по теме через пост.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873702
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем Gпо поводу флюента и кто говорил. прям во втором посте и написано и далее по теме через пост.
Процитируйте этот пост еще раз, пожалуйста. Жирным выделите ту часть, где я написал про то, что флюент==лямбды.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873767
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артем Gпо поводу флюента и кто говорил. прям во втором посте и написано и далее по теме через пост.не кто говорил про флюент, а кто говорил про Fluent API
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873775
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
колотить... вот споры пошли, чё как называется
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873867
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttбольше всего обижает тот факт, что в LINQ не предусмотрен outer/full join, приходится юзать свои расширения.
Больше всего обижает тот факт, что ты LINQ до сих пор так и не осилил.

http://codearticles.ru/articles/925
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873877
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУБольше всего обижает тот факт, что ты LINQ до сих пор так и не осилил.

http://codearticles.ru/articles/925 Больше всего обижает тот факт, что ты не знаешь, чем отличается full join от union select
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873880
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУБольше всего обижает тот факт, что ты LINQ до сих пор так и не осилил.
http://codearticles.ru/articles/925 Больше всего обижает тот факт, что ты не знаешь, чем отличается full join от union select
Еще больше всего обижает тот факт, что ты не умеешь читать код, в котором черным по-белому написано, что union объединяет left outer join и right outer join. Это и есть full outer join. Учи матчасть, отрок.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873885
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЕще больше всего обижает тот факт, что ты не умеешь читать код, в котором черным по-белому написано, что union объединяет left outer join и right outer join. Это и есть full outer join. Учи матчасть, отрок.Еще больше обижает тот факт, что ты вписал эту ересь в рецепт, и с умным видом чего-то доказываешь. Union умеет объединять только однотипные коллекции и фактически представляет собой .Concat().Distinct(). Это к full join не имеет никакого отношения. Учи матчасть, дедушка.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873894
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕще больше обижает тот факт, что ты вписал эту ересь в рецепт, и с умным видом чего-то доказываешь. Union умеет объединять только однотипные коллекции и фактически представляет собой .Concat().Distinct(). Это к full join не имеет никакого отношения. Учи матчасть, дедушка.
Еще больше обижает тот факт, что у тебя отсутствует мало-мальски серого вещества, что бы сделать под Union фейковое недостающее свойство, чтобы по нему можно было объединиться.

Full outer join необходим для отображения всех возможных комбинаций строк из нескольких таблиц. Иными словами, это объединение результатов left и right join .

Вот тут примеры конструкций http://www.javenue.info/post/20

Убей уже себя об стену, днище
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873902
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя память девичья, тебе замуж пора. Изначально речь шла о том, что нет нативной реализации FullJoin без костылей с граблями. А ты тут про фейковые костыли начал вещать - сливать тему. Что ты ссылки мне кидаешь на говностатьи про SQL, ты его сам сначала освой.

Ну давай, покажи мастер класс полного внешнего объединения
IEnumerable<{ int Id, string Name }> и IEnumerable<{ int Id, int Age }> по полю Id через "фейковое недостающее свойство". Потом не забудь рассказать для общего образования, как это будет выглядеть для IQueryable
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873912
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProУ тебя память девичья, тебе замуж пора. Изначально речь шла о том, что нет нативной реализации FullJoin без костылей с граблями.
У тебя весь мозг вытек, хоть сено подложи, нужно же чем-то думать. Что такое "нативная реализация" FullJoin? Зачем она тебе?

По такой же логики, нету и нативной реализации left outer join, ведь для этого нужно написать код:

Код: c#
1.
2.
3.
4.
var q3 = from x1 in x
         join y1 in y on x1 equals y1 into temp
         from t in temp.DefaultIfEmpty()
         select new { value = x1, t };



или тоже самое можно выразить через GroupJoin,

Код: c#
1.
var q4 = x.GroupJoin(y, x1 => x1, y1 => y1, (value, temp) => new { value, t = temp.FirstOrDefault() });



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

Shocker.ProА ты тут про фейковые костыли начал вещать - сливать тему. Что ты ссылки мне кидаешь на говностатьи про SQL, ты его сам сначала освой.
Я тебе про фейковое поле начал вещать, когда ты спросил про разные типы. Если типы коллекций разные, принято обобщать в однотипную коллекцию, причем тип может быть и анонимный - это еще более удобнее для написания LINQ запросов. Такие подходы применяют и в SQL, ничего нового не изобретено. Что тебя удивляет? Если же типы коллекций одинаковы, тогда вообще никаких вопросов не должно возникать, делать обычный Union для left и rigt джойнов. Всё.

Shocker.ProНу давай, покажи мастер класс полного внешнего объединения
IEnumerable<{ int Id, string Name }> и IEnumerable<{ int Id, int Age }> по полю Id через "фейковое недостающее свойство". Потом не забудь рассказать для общего образования, как это будет выглядеть для IQueryable

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var ax = new[] { new A { Id = 1, Name = "A" }, new A { Id = 2, Name = "B" } };
var ay = new[] { new B { Id = 1, Age = 10 }, new B { Id = 3, Age = 20 } };

var x = ax.Select(s => new { s.Id, s.Name, Age = -1 });
var y = ay.Select(s => new { s.Id, Name = string.Empty, s.Age });

var q1 = x.GroupJoin(y, x1 => x1, y1 => y1, (value, temp) => value);
var q2 = y.GroupJoin(x, y1 => y1, x1 => x1, (value, temp) => value);

var q6 = q1.Union(q2);



Код: c#
1.
2.
class A { public int Id { get; set; } public string Name { get; set; } }
class B { public int Id { get; set; } public int Age { get; set; } }



Для IQueryable это будет выглядеть, как 2 обычные запроса left + right. А потом можно сделать локальный Union. Либо еще лучше, выбрать общую порцию по фильтру из таблицы и локально сделать left + right + union. В зависимости от задачи.
...
Рейтинг: 0 / 0
25 сообщений из 222, страница 3 из 9
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ: кто какой синтаксис использует?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]