powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ: кто какой синтаксис использует?
25 сообщений из 222, страница 6 из 9
LINQ: кто какой синтаксис использует?
    #38874759
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спору нет. В штатной комплектации поддержки Outer-джойнов нет. Но в штатной комплектации много чего нет. На то и разработчики нужны, чтобы "я его слепила из того что было а потом что было то и полюбила".

Эта зубодробительная попытка показывает одни подход в решению задачи - подменять исходные данные так, чтобы стандартный join выдавал правильные результаты. Вторая попытка - реализовать extention - методы для IEnumerable.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874762
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttArm79Или вот: http://habrahabr.ru/sandbox/39626/ вариант с джойнами интересно сделан

Да, смотрел это зубодробительную попытку вкорячить в синтаксис LINQ отсутствующие конструкции.+ которую вряд ли Entity Framework преобразует в SQL.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874765
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Спору нет. В штатной комплектации поддержки Outer-джойнов нет. Но в штатной комплектации много чего нет. На то и разработчики нужны, чтобы "я его слепила из того что было а потом что было то и полюбила".

Эта зубодробительная попытка показывает одни подход в решению задачи - подменять исходные данные так, чтобы стандартный join выдавал правильные результаты. Вторая попытка - реализовать extention - методы для IEnumerable.Тут не соглашусь. Одной из целей создания LINQ есть упрощение интеграции C# с SQL. Должны были сделать нормальный outer join, просто обязаны.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874770
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУОткрой файл Extensions.cs, блондинка.
Накой мне эта поделка?
Не знаю.

hVosttСсылку на оттестированный, отлаженный и отлично рабочий NuGet-пакет я давал в этой теме. А в твоей корявой поделке даже тестов нет. Фу-фу-фу.
Чё там тестировать-то?

hVosttЧё ты опять несёшь? В SQL есть LEFT JOIN. Где аналог в LINQ?
Вот:

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



Это 100% аналог left join, транслируется он так же корректно.

hVosttТо, что можно сделать — ясно.
Жжешь Ты хочешь единую "оттестированную" кнопку с нугета, с надписью "сделать всё"?

hVosttТак можно и глаз через анальный проход вылечить. Ты покажи left join в LINQ, харе выпендриваться.
Если ты не умеешь готовить LINQ, то тебе и анальный проход не поможет. Инфа 147%.

hVosttМСУНе вспомню ни одного примера, где был нужен фулл. Вот кросс джойн периодически нужен.
Примеров масса.
Например?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874771
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttпропущено...


Да, смотрел это зубодробительную попытку вкорячить в синтаксис LINQ отсутствующие конструкции.+ которую вряд ли Entity Framework преобразует в SQL.
В общем, тут нет смысла сомневаться. Ни один провайдер не преобразует хабрахабровский вариант
Алексей КТут не соглашусь. Одной из целей создания LINQ есть упрощение интеграции C# с SQL. Должны были сделать нормальный outer join, просто обязаны.
Left Join посредством DefaultIfEmty() (right join - это в принципе тот же left) поддерживают, а вот Full - сомнительно, что провайдер настолько интеллектуальный, чтобы преобразовать в FULL OUTER JOIN комбинацию из двух LEFT + UNION
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874772
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttArm79пропущено...

Дык вот же: https://msdn.microsoft.com/en-us/library/bb397895.aspx

Код: c#
1.
from subpet in gj.DefaultIfEmpty()



Это не аналог left join, это способ его выполнить.
Ну это к разработчикам LINQ все вопросы. Они сделали именно так, не нравится - используй другие ORM. Хотя я не вижу проблем привыкнуть к тому, что дают разработчики платформы. Твои сопли - это унылое нытьё. Соберись, тряпка!
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874775
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79а вот Full - сомнительно, что провайдер настолько интеллектуальный, чтобы преобразовать в FULL OUTER JOIN комбинацию из двух LEFT + UNION
Честно говоря, нафик не нужно. Я не вспомню ни одного случая, где мы мне понадобился full join. Детские обучающие примеры и тренинг-рецептики не в счёт. И даже если понадобится full, можно просто запросить обычным запросом факты из БД и собрать full join на клиенте. Ясно, что факты - это не вся выборка из таблицы, а некая фильтрованная часть.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874786
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Спору нет. В штатной комплектации поддержки Outer-джойнов нет. Но в штатной комплектации много чего нет. На то и разработчики нужны, чтобы "я его слепила из того что было а потом что было то и полюбила".

Эта зубодробительная попытка показывает одни подход в решению задачи - подменять исходные данные так, чтобы стандартный join выдавал правильные результаты. Вторая попытка - реализовать extention - методы для IEnumerable.

Ну экстеншенов подобных развелось много. Речь шла о печали на тему того, что нет синтаксиса к часто используемым конструкциям, только и всего.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874795
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЧё там тестировать-то?

Экстеншены. Я уже давно понял, что ты всегда избегаешь юнит-тестирования, полагаясь на своё обычное наивное «чё там тестировать-то». Ну за ето не мне тебя судить, но такие поделки — предлагай своим коллегам-студентам.

МСУЭто 100% аналог left join, транслируется он так же корректно.

Это не аналог left join. Это то, что в результате работает КАК left join, но аналогом синтаксической указанной конструкции не является.

МСУЕсли ты не умеешь готовить LINQ, то тебе и анальный проход не поможет. Инфа 147%.

Тя заклинило на готовке, может ты не ту специализацию выбрал?
Пока ещё не поздно пойди работать поваром!

МСУНапример?

Привёл выше.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874799
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу это к разработчикам LINQ все вопросы. Они сделали именно так, не нравится - используй другие ORM. Хотя я не вижу проблем привыкнуть к тому, что дают разработчики платформы. Твои сопли - это унылое нытьё. Соберись, тряпка!

Ну вот к ним и адресованы эти вопросы, что ж ты такой непонятливый. Может ты объяснишь нам, что им помешало вкорячить ключевые слова left/right/full? Поделись что ли секретом.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874833
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУЧё там тестировать-то?
Экстеншены. Я уже давно понял, что ты всегда избегаешь юнит-тестирования, полагаясь на своё обычное наивное «чё там тестировать-то». Ну за ето не мне тебя судить, но такие поделки — предлагай своим коллегам-студентам.
Ну протестируй экстеншены. В чем проблема? Я не понимаю проблемы, которую ты высосал из пальца. Или ты предлагаешь минимум писать код и максимум его грузить откуда-то из нугета от пионеров, которые уже протестировали свои поделки? Я правильно понял?

hVosttЭто не аналог left join. Это то, что в результате работает КАК left join, но аналогом синтаксической указанной конструкции не является.
Да, это не аналог left join, это и есть left join. Абсолютно верно. Так в чем твои страхи-то? Написать строчку кода - это проблема?

hVosttМСУЕсли ты не умеешь готовить LINQ, то тебе и анальный проход не поможет. Инфа 147%.
Тя заклинило на готовке, может ты не ту специализацию выбрал?
Пока ещё не поздно пойди работать поваром!
Меня-то не заклинило, я решаю проблемы по мере их поступления, а не несу очередную околопоносицу про какие-то жуткие страшилки о том, что нужно весь код сливать из нугета, потому что он уже протестирован.

hVosttМСУНапример?
Привёл выше.
Вот здесь может пригодиться full outer join: получить общий список владельцев (Owners) -- в левой части актуальные, в правой изменённые, пройтись по этому списку и добавить, либо удалить.
Это называется каша и в голове и в коде. Бизнес модель должна явным образом отражать данные и операцию, которую нужно с ними проделать. Вместо вываливания кашей этого в full outer join, сделай себе объект с n коллекциями и признаком, что нужно делать с этой коллекцией - добавлять, изменять, удалять. Такая модель легко тестируется и живет. Во-вторых, я так и не понял, как ты собираешься отделять в своей каше элементы, которые нужно добавить, изменить, удалять? Идея, конечно, заслуживает медали маразматика, но всё же.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874836
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУНу это к разработчикам LINQ все вопросы. Они сделали именно так, не нравится - используй другие ORM. Хотя я не вижу проблем привыкнуть к тому, что дают разработчики платформы. Твои сопли - это унылое нытьё. Соберись, тряпка!
Ну вот к ним и адресованы эти вопросы, что ж ты такой непонятливый. Может ты объяснишь нам, что им помешало вкорячить ключевые слова left/right/full? Поделись что ли секретом.
Так тебе дали функционал в руки, бери и пользуйся. Я не знаю, что им помешало вкорячить, но первые 2 запроса делаются элементарно из одной строчки кода. Нужность третьего практически нулевая.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874852
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭто называется каша и в голове и в коде. Бизнес модель должна явным образом отражать данные и операцию , которую нужно с ними проделать. Вместо вываливания кашей этого в full outer join, сделай себе объект с n коллекциями и признаком, что нужно делать с этой коллекцией - добавлять, изменять, удалять. Такая модель легко тестируется и живет. Во-вторых, я так и не понял, как ты собираешься отделять в своей каше элементы, которые нужно добавить, изменить, удалять? Идея, конечно, заслуживает медали маразматика, но всё же.Никто никому ничего не должен. Бывает неудобно добавлять в модель свойство с типом операции сохранения.

Но мне больше нравится такое решение:
public static void AttachManyAs<T>(this DbContext ctx, IEnumerable<T> items, Expression<Func<T, bool>> existingItemsFilter)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874858
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНикто никому ничего не должен. Бывает неудобно добавлять в модель свойство с типом операции сохранения.
Да, хранить кашеобразные данные с последующей фильтрацией по магическим нуллам - это очень удобно. Особенно, когда добавится новый очевидный тип операции
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874859
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНикто никому ничего не должен. Бывает неудобно добавлять в модель свойство с типом операции сохранения.
Да, хранить кашеобразные данные с последующей фильтрацией по магическим нуллам - это очень удобно. Особенно, когда добавится новый очевидный тип операции Какой новый тип операции в круде?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874886
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей ККакой новый тип операции в круде?
Причем тут круд?

Операции:

создать

изменить

удалить

отправить по почте

послать на х..й

убить об стену

Мало? Какой full join, зачем?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874894
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей ККакой новый тип операции в круде?
Причем тут круд?Такая постановка задачи: изменить содержимое БД в соответствии с указанной коллекцией и фильтром по БД.
МСУОперации:

создать

изменить

удалить

отправить по почте

послать на х..й

убить об стену

Мало?
Это не круд.
МСУКакой full join, зачем?Да. До настоящего момента был нужен.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874930
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТакая постановка задачи: изменить содержимое БД в соответствии с указанной коллекцией и фильтром по БД.
Решение: тип + сами коллекции. Или лучше всё это в base64 закодировать, а потом по magic-условиям выгребать? :)

Алексей КЭто не круд
Чегойто?

Алексей КМСУКакой full join, зачем?Да. До настоящего момента был нужен.
Хз, не понимаю его нужности применительно с данной задаче.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874946
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КТакая постановка задачи: изменить содержимое БД в соответствии с указанной коллекцией и фильтром по БД.
Решение: тип + сами коллекции.Не хочу.
МСУИли лучше всё это в base64 закодировать, а потом по magic-условиям выгребать? :)А вы всё шутите...
МСУАлексей КЭто не круд
Чегойто? В моём понимании там круд + что-то ещё.
МСУАлексей Кпропущено...
Да. До настоящего момента был нужен.
Хз, не понимаю его нужности применительно с данной задаче.Ну способ слить существующее с сохраняемым. Только я тут не при чём.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874950
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУКакой full join, зачем?Да. До настоящего момента был НЕ нужен.Поправил.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874972
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУРешение: тип + сами коллекции.Не хочу.
Ну не хочешь называть вещи своими именами, тогда парсь, интерпретируй свои magic нуллы. Я не против. Качество такой модели уровня канализации.

Алексей КМСУИли лучше всё это в base64 закодировать, а потом по magic-условиям выгребать? :)А вы всё шутите...
А вы действительно считаете, что этот способ намного хуже интерпретации магических нулей?

Алексей КМСУпропущено...
Чегойто? В моём понимании там круд + что-то ещё.
Так. И?

Алексей КНу способ слить существующее с сохраняемым. Только я тут не при чём.
Я понимаю, это способ. Рабочий способ. По сути такой же, как и бубнотряска с base64, озвученная выше. Так? Спасибо, лесом такой магик код ))
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874989
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Не хочу.
Ну не хочешь называть вещи своими именами, тогда парсь, интерпретируй свои magic нуллы. Я не против. Качество такой модели уровня канализации.

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

МСУАлексей Кпропущено...
В моём понимании там круд + что-то ещё.
Так. И? И всё!
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874991
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПро "магический нуль" до сих пор не понял.

ХвостВот здесь может пригодиться full outer join: получить общий список владельцев (Owners) -- в левой части актуальные, в правой изменённые, пройтись по этому списку и добавить, либо удалить.

Мась, а тебе отгадай, как он в full outer join'е собирается отделять мух от котлет? :)

Алексей КМСУпропущено...
Так. И? И всё!
А ничего!
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38875023
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КПро "магический нуль" до сих пор не понял.

ХвостВот здесь может пригодиться full outer join: получить общий список владельцев (Owners) -- в левой части актуальные, в правой изменённые, пройтись по этому списку и добавить, либо удалить.

Мась, а тебе отгадай, как он в full outer join'е собирается отделять мух от котлет? :)Ну поджойнит по первичному ключу да отделит. Не вижу проблемы. Я в том примере делаю примерно то же самое.

МСУАлексей Кпропущено...
И всё!
А ничего! Слабак!
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38875092
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу протестируй экстеншены. В чем проблема? Я не понимаю проблемы, которую ты высосал из пальца. Или ты предлагаешь минимум писать код и максимум его грузить откуда-то из нугета от пионеров, которые уже протестировали свои поделки? Я правильно понял?

Нет, пилять, копипастить куски непонятного кода ХЗ откуда

МСУДа, это не аналог left join, это и есть left join. Абсолютно верно. Так в чем твои страхи-то? Написать строчку кода - это проблема?

это не есть left join, это синтаксически совершенно разные конструкции, хотя результат один и тот же. с точки зрения получения результата вопросов нет, покрайней мере left можно получить сравнительно малой кровью . но вот full outer без кастомных громоздких экстеншенов нечитабелен чуть менее, чем полностью, так что не ипай нам тут мозг своей хернёй

МСУМеня-то не заклинило, я решаю проблемы по мере их поступления, а не несу очередную околопоносицу про какие-то жуткие страшилки о том, что нужно весь код сливать из нугета, потому что он уже протестирован.

Потому что тестирование это для тебя нечто неведомое, давай не мажся, просто ты не умеешь пользоваться тестами (_не умеешь их готовить_). Но это не мои проблемы, а твои

МСУЭто называется каша и в голове и в коде. Бизнес модель должна явным образом отражать данные и операцию, которую нужно с ними проделать. Вместо вываливания кашей этого в full outer join, сделай себе объект с n коллекциями и признаком, что нужно делать с этой коллекцией - добавлять, изменять, удалять. Такая модель легко тестируется и живет. Во-вторых, я так и не понял, как ты собираешься отделять в своей каше элементы, которые нужно добавить, изменить, удалять? Идея, конечно, заслуживает медали маразматика, но всё же.

эээммм...

Код: c#
1.
2.
3.
4.
original collection:      1      2      null
modified collectio:    null      2         3

outer full joined collection:   {1, null}, {2, 2},  { null, 3 {


перебор:

Код: c#
1.
2.
3.
4.
5.
6.
7.
for(item in joined_collection)
{

   if( item.Item1 == null ) _service.AddOwner(entity, ownerId: item.Item1);
   else if( item.Item2 == null ) _servive.RemoveOwner(entity, ownerId: item.Item2); 

}



тибе как маленькому надо обиснять?
...
Рейтинг: 0 / 0
25 сообщений из 222, страница 6 из 9
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ: кто какой синтаксис использует?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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