|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Спору нет. В штатной комплектации поддержки Outer-джойнов нет. Но в штатной комплектации много чего нет. На то и разработчики нужны, чтобы "я его слепила из того что было а потом что было то и полюбила". Эта зубодробительная попытка показывает одни подход в решению задачи - подменять исходные данные так, чтобы стандартный join выдавал правильные результаты. Вторая попытка - реализовать extention - методы для IEnumerable. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 13:47 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
hVosttArm79Или вот: http://habrahabr.ru/sandbox/39626/ вариант с джойнами интересно сделан Да, смотрел это зубодробительную попытку вкорячить в синтаксис LINQ отсутствующие конструкции.+ которую вряд ли Entity Framework преобразует в SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 13:48 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Arm79Спору нет. В штатной комплектации поддержки Outer-джойнов нет. Но в штатной комплектации много чего нет. На то и разработчики нужны, чтобы "я его слепила из того что было а потом что было то и полюбила". Эта зубодробительная попытка показывает одни подход в решению задачи - подменять исходные данные так, чтобы стандартный join выдавал правильные результаты. Вторая попытка - реализовать extention - методы для IEnumerable.Тут не соглашусь. Одной из целей создания LINQ есть упрощение интеграции C# с SQL. Должны были сделать нормальный outer join, просто обязаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 13:50 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
hVosttМСУОткрой файл Extensions.cs, блондинка. Накой мне эта поделка? Не знаю. hVosttСсылку на оттестированный, отлаженный и отлично рабочий NuGet-пакет я давал в этой теме. А в твоей корявой поделке даже тестов нет. Фу-фу-фу. Чё там тестировать-то? hVosttЧё ты опять несёшь? В SQL есть LEFT JOIN. Где аналог в LINQ? Вот: Код: c# 1. 2. 3. 4.
Это 100% аналог left join, транслируется он так же корректно. hVosttТо, что можно сделать — ясно. Жжешь Ты хочешь единую "оттестированную" кнопку с нугета, с надписью "сделать всё"? hVosttТак можно и глаз через анальный проход вылечить. Ты покажи left join в LINQ, харе выпендриваться. Если ты не умеешь готовить LINQ, то тебе и анальный проход не поможет. Инфа 147%. hVosttМСУНе вспомню ни одного примера, где был нужен фулл. Вот кросс джойн периодически нужен. Примеров масса. Например? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 13:55 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Алексей КhVosttпропущено... Да, смотрел это зубодробительную попытку вкорячить в синтаксис LINQ отсутствующие конструкции.+ которую вряд ли Entity Framework преобразует в SQL. В общем, тут нет смысла сомневаться. Ни один провайдер не преобразует хабрахабровский вариант Алексей КТут не соглашусь. Одной из целей создания LINQ есть упрощение интеграции C# с SQL. Должны были сделать нормальный outer join, просто обязаны. Left Join посредством DefaultIfEmty() (right join - это в принципе тот же left) поддерживают, а вот Full - сомнительно, что провайдер настолько интеллектуальный, чтобы преобразовать в FULL OUTER JOIN комбинацию из двух LEFT + UNION ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 13:58 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
hVosttArm79пропущено... Дык вот же: https://msdn.microsoft.com/en-us/library/bb397895.aspx Код: c# 1.
Это не аналог left join, это способ его выполнить. Ну это к разработчикам LINQ все вопросы. Они сделали именно так, не нравится - используй другие ORM. Хотя я не вижу проблем привыкнуть к тому, что дают разработчики платформы. Твои сопли - это унылое нытьё. Соберись, тряпка! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 13:58 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Arm79а вот Full - сомнительно, что провайдер настолько интеллектуальный, чтобы преобразовать в FULL OUTER JOIN комбинацию из двух LEFT + UNION Честно говоря, нафик не нужно. Я не вспомню ни одного случая, где мы мне понадобился full join. Детские обучающие примеры и тренинг-рецептики не в счёт. И даже если понадобится full, можно просто запросить обычным запросом факты из БД и собрать full join на клиенте. Ясно, что факты - это не вся выборка из таблицы, а некая фильтрованная часть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 14:01 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Arm79Спору нет. В штатной комплектации поддержки Outer-джойнов нет. Но в штатной комплектации много чего нет. На то и разработчики нужны, чтобы "я его слепила из того что было а потом что было то и полюбила". Эта зубодробительная попытка показывает одни подход в решению задачи - подменять исходные данные так, чтобы стандартный join выдавал правильные результаты. Вторая попытка - реализовать extention - методы для IEnumerable. Ну экстеншенов подобных развелось много. Речь шла о печали на тему того, что нет синтаксиса к часто используемым конструкциям, только и всего. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 14:09 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУЧё там тестировать-то? Экстеншены. Я уже давно понял, что ты всегда избегаешь юнит-тестирования, полагаясь на своё обычное наивное «чё там тестировать-то». Ну за ето не мне тебя судить, но такие поделки — предлагай своим коллегам-студентам. МСУЭто 100% аналог left join, транслируется он так же корректно. Это не аналог left join. Это то, что в результате работает КАК left join, но аналогом синтаксической указанной конструкции не является. МСУЕсли ты не умеешь готовить LINQ, то тебе и анальный проход не поможет. Инфа 147%. Тя заклинило на готовке, может ты не ту специализацию выбрал? Пока ещё не поздно пойди работать поваром! МСУНапример? Привёл выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 14:15 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУНу это к разработчикам LINQ все вопросы. Они сделали именно так, не нравится - используй другие ORM. Хотя я не вижу проблем привыкнуть к тому, что дают разработчики платформы. Твои сопли - это унылое нытьё. Соберись, тряпка! Ну вот к ним и адресованы эти вопросы, что ж ты такой непонятливый. Может ты объяснишь нам, что им помешало вкорячить ключевые слова left/right/full? Поделись что ли секретом. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 14:16 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
hVosttМСУЧё там тестировать-то? Экстеншены. Я уже давно понял, что ты всегда избегаешь юнит-тестирования, полагаясь на своё обычное наивное «чё там тестировать-то». Ну за ето не мне тебя судить, но такие поделки — предлагай своим коллегам-студентам. Ну протестируй экстеншены. В чем проблема? Я не понимаю проблемы, которую ты высосал из пальца. Или ты предлагаешь минимум писать код и максимум его грузить откуда-то из нугета от пионеров, которые уже протестировали свои поделки? Я правильно понял? hVosttЭто не аналог left join. Это то, что в результате работает КАК left join, но аналогом синтаксической указанной конструкции не является. Да, это не аналог left join, это и есть left join. Абсолютно верно. Так в чем твои страхи-то? Написать строчку кода - это проблема? hVosttМСУЕсли ты не умеешь готовить LINQ, то тебе и анальный проход не поможет. Инфа 147%. Тя заклинило на готовке, может ты не ту специализацию выбрал? Пока ещё не поздно пойди работать поваром! Меня-то не заклинило, я решаю проблемы по мере их поступления, а не несу очередную околопоносицу про какие-то жуткие страшилки о том, что нужно весь код сливать из нугета, потому что он уже протестирован. hVosttМСУНапример? Привёл выше. Вот здесь может пригодиться full outer join: получить общий список владельцев (Owners) -- в левой части актуальные, в правой изменённые, пройтись по этому списку и добавить, либо удалить. Это называется каша и в голове и в коде. Бизнес модель должна явным образом отражать данные и операцию, которую нужно с ними проделать. Вместо вываливания кашей этого в full outer join, сделай себе объект с n коллекциями и признаком, что нужно делать с этой коллекцией - добавлять, изменять, удалять. Такая модель легко тестируется и живет. Во-вторых, я так и не понял, как ты собираешься отделять в своей каше элементы, которые нужно добавить, изменить, удалять? Идея, конечно, заслуживает медали маразматика, но всё же. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 14:51 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
hVosttМСУНу это к разработчикам LINQ все вопросы. Они сделали именно так, не нравится - используй другие ORM. Хотя я не вижу проблем привыкнуть к тому, что дают разработчики платформы. Твои сопли - это унылое нытьё. Соберись, тряпка! Ну вот к ним и адресованы эти вопросы, что ж ты такой непонятливый. Может ты объяснишь нам, что им помешало вкорячить ключевые слова left/right/full? Поделись что ли секретом. Так тебе дали функционал в руки, бери и пользуйся. Я не знаю, что им помешало вкорячить, но первые 2 запроса делаются элементарно из одной строчки кода. Нужность третьего практически нулевая. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 14:53 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУЭто называется каша и в голове и в коде. Бизнес модель должна явным образом отражать данные и операцию , которую нужно с ними проделать. Вместо вываливания кашей этого в full outer join, сделай себе объект с n коллекциями и признаком, что нужно делать с этой коллекцией - добавлять, изменять, удалять. Такая модель легко тестируется и живет. Во-вторых, я так и не понял, как ты собираешься отделять в своей каше элементы, которые нужно добавить, изменить, удалять? Идея, конечно, заслуживает медали маразматика, но всё же.Никто никому ничего не должен. Бывает неудобно добавлять в модель свойство с типом операции сохранения. Но мне больше нравится такое решение: public static void AttachManyAs<T>(this DbContext ctx, IEnumerable<T> items, Expression<Func<T, bool>> existingItemsFilter) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 15:01 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Алексей КНикто никому ничего не должен. Бывает неудобно добавлять в модель свойство с типом операции сохранения. Да, хранить кашеобразные данные с последующей фильтрацией по магическим нуллам - это очень удобно. Особенно, когда добавится новый очевидный тип операции ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 15:05 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУАлексей КНикто никому ничего не должен. Бывает неудобно добавлять в модель свойство с типом операции сохранения. Да, хранить кашеобразные данные с последующей фильтрацией по магическим нуллам - это очень удобно. Особенно, когда добавится новый очевидный тип операции Какой новый тип операции в круде? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 15:06 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Алексей ККакой новый тип операции в круде? Причем тут круд? Операции: создать изменить удалить отправить по почте послать на х..й убить об стену Мало? Какой full join, зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 15:23 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУАлексей ККакой новый тип операции в круде? Причем тут круд?Такая постановка задачи: изменить содержимое БД в соответствии с указанной коллекцией и фильтром по БД. МСУОперации: создать изменить удалить отправить по почте послать на х..й убить об стену Мало? Это не круд. МСУКакой full join, зачем?Да. До настоящего момента был нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 15:26 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Алексей КТакая постановка задачи: изменить содержимое БД в соответствии с указанной коллекцией и фильтром по БД. Решение: тип + сами коллекции. Или лучше всё это в base64 закодировать, а потом по magic-условиям выгребать? :) Алексей КЭто не круд Чегойто? Алексей КМСУКакой full join, зачем?Да. До настоящего момента был нужен. Хз, не понимаю его нужности применительно с данной задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 15:52 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУАлексей КТакая постановка задачи: изменить содержимое БД в соответствии с указанной коллекцией и фильтром по БД. Решение: тип + сами коллекции.Не хочу. МСУИли лучше всё это в base64 закодировать, а потом по magic-условиям выгребать? :)А вы всё шутите... МСУАлексей КЭто не круд Чегойто? В моём понимании там круд + что-то ещё. МСУАлексей Кпропущено... Да. До настоящего момента был нужен. Хз, не понимаю его нужности применительно с данной задаче.Ну способ слить существующее с сохраняемым. Только я тут не при чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 16:04 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Алексей КМСУКакой full join, зачем?Да. До настоящего момента был НЕ нужен.Поправил. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 16:05 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Алексей КМСУРешение: тип + сами коллекции.Не хочу. Ну не хочешь называть вещи своими именами, тогда парсь, интерпретируй свои magic нуллы. Я не против. Качество такой модели уровня канализации. Алексей КМСУИли лучше всё это в base64 закодировать, а потом по magic-условиям выгребать? :)А вы всё шутите... А вы действительно считаете, что этот способ намного хуже интерпретации магических нулей? Алексей КМСУпропущено... Чегойто? В моём понимании там круд + что-то ещё. Так. И? Алексей КНу способ слить существующее с сохраняемым. Только я тут не при чём. Я понимаю, это способ. Рабочий способ. По сути такой же, как и бубнотряска с base64, озвученная выше. Так? Спасибо, лесом такой магик код )) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 16:18 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... Не хочу. Ну не хочешь называть вещи своими именами, тогда парсь, интерпретируй свои magic нуллы. Я не против. Качество такой модели уровня канализации. Алексей Кпропущено... А вы всё шутите... А вы действительно считаете, что этот способ намного хуже интерпретации магических нулей? Про "магический нуль" до сих пор не понял. МСУАлексей Кпропущено... В моём понимании там круд + что-то ещё. Так. И? И всё! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 16:37 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
Алексей КПро "магический нуль" до сих пор не понял. ХвостВот здесь может пригодиться full outer join: получить общий список владельцев (Owners) -- в левой части актуальные, в правой изменённые, пройтись по этому списку и добавить, либо удалить. Мась, а тебе отгадай, как он в full outer join'е собирается отделять мух от котлет? :) Алексей КМСУпропущено... Так. И? И всё! А ничего! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 16:43 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУАлексей КПро "магический нуль" до сих пор не понял. ХвостВот здесь может пригодиться full outer join: получить общий список владельцев (Owners) -- в левой части актуальные, в правой изменённые, пройтись по этому списку и добавить, либо удалить. Мась, а тебе отгадай, как он в full outer join'е собирается отделять мух от котлет? :)Ну поджойнит по первичному ключу да отделит. Не вижу проблемы. Я в том примере делаю примерно то же самое. МСУАлексей Кпропущено... И всё! А ничего! Слабак! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 17:21 |
|
LINQ: кто какой синтаксис использует?
|
|||
---|---|---|---|
#18+
МСУНу протестируй экстеншены. В чем проблема? Я не понимаю проблемы, которую ты высосал из пальца. Или ты предлагаешь минимум писать код и максимум его грузить откуда-то из нугета от пионеров, которые уже протестировали свои поделки? Я правильно понял? Нет, пилять, копипастить куски непонятного кода ХЗ откуда МСУДа, это не аналог left join, это и есть left join. Абсолютно верно. Так в чем твои страхи-то? Написать строчку кода - это проблема? это не есть left join, это синтаксически совершенно разные конструкции, хотя результат один и тот же. с точки зрения получения результата вопросов нет, покрайней мере left можно получить сравнительно малой кровью . но вот full outer без кастомных громоздких экстеншенов нечитабелен чуть менее, чем полностью, так что не ипай нам тут мозг своей хернёй МСУМеня-то не заклинило, я решаю проблемы по мере их поступления, а не несу очередную околопоносицу про какие-то жуткие страшилки о том, что нужно весь код сливать из нугета, потому что он уже протестирован. Потому что тестирование это для тебя нечто неведомое, давай не мажся, просто ты не умеешь пользоваться тестами (_не умеешь их готовить_). Но это не мои проблемы, а твои МСУЭто называется каша и в голове и в коде. Бизнес модель должна явным образом отражать данные и операцию, которую нужно с ними проделать. Вместо вываливания кашей этого в full outer join, сделай себе объект с n коллекциями и признаком, что нужно делать с этой коллекцией - добавлять, изменять, удалять. Такая модель легко тестируется и живет. Во-вторых, я так и не понял, как ты собираешься отделять в своей каше элементы, которые нужно добавить, изменить, удалять? Идея, конечно, заслуживает медали маразматика, но всё же. эээммм... Код: c# 1. 2. 3. 4.
перебор: Код: c# 1. 2. 3. 4. 5. 6. 7.
тибе как маленькому надо обиснять? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2015, 18:24 |
|
|
start [/forum/topic.php?fid=20&msg=38874770&tid=1401906]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 153ms |
0 / 0 |