powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ: кто какой синтаксис использует?
222 сообщений из 222, показаны все 9 страниц
LINQ: кто какой синтаксис использует?
    #38870715
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Познакомившись с LINQ после интенсивной работы с TSQL, я был в восторге от идеи использовать аналогичный синтаксис запросов в C# (типа from ... where ... select ...)

Но через некоторое время обнаружил себя, пишушим запросы в текучем синтаксисе (....Where(n=>...).Select(n=>...)) и не испытывающим никакого желания использовать сахар.

А вы какой синтаксис используете обычно и почему?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38870827
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПознакомившись с LINQ после интенсивной работы с TSQL, я был в восторге от идеи использовать аналогичный синтаксис запросов в C# (типа from ... where ... select ...)

Но через некоторое время обнаружил себя, пишушим запросы в текучем синтаксисе (....Where(n=>...).Select(n=>...)) и не испытывающим никакого желания использовать сахар.

А вы какой синтаксис используете обычно и почему?

зависит от ситуации. сложный запрос лучше строить сахаром, так как на порядок читабельнее. ну и в сахаре есть плюшки, которых нет во флюенте, например, let

больше всего обижает тот факт, что в LINQ не предусмотрен outer/full join, приходится юзать свои расширения.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38870829
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне флюент нравится. Там посказки вылазят походу написания.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38870917
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttShocker.ProПознакомившись с LINQ после интенсивной работы с TSQL, я был в восторге от идеи использовать аналогичный синтаксис запросов в C# (типа from ... where ... select ...)

Но через некоторое время обнаружил себя, пишушим запросы в текучем синтаксисе (....Where(n=>...).Select(n=>...)) и не испытывающим никакого желания использовать сахар.

А вы какой синтаксис используете обычно и почему?

зависит от ситуации. сложный запрос лучше строить сахаром, так как на порядок читабельнее. ну и в сахаре есть плюшки, которых нет во флюенте, например, let + "сахарный" join на порядок читабельнее.
hVosttбольше всего обижает тот факт, что в LINQ не предусмотрен outer/full join, приходится юзать свои расширения .Покажи для left join ?

зы: join стараемся не использовать, стараемся пользоваться ассоциациями.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38870934
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttну и в сахаре есть плюшки, которых нет во флюенте, например, let
Просто потому что во флюенте let не нужен - там есть такие вещи, как SelectMany, или возможность использовать в теле методов анонимные программные блоки. Например, msdn'овский пример про let:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var strings = new[]
{
  "A penny saved is a penny earned.",
  "The early bird catches the worm.",
  "The pen is mightier than the sword." 
};
var earlyBirdQuery =
    from sentence in strings
    let words = sentence.Split(' ')
    from word in words
    let w = word.ToLower()
    where w[0] == 'a' || w[0] == 'e'
        || w[0] == 'i' || w[0] == 'o'
        || w[0] == 'u'
    select word;
foreach (var v in earlyBirdQuery)
{
  Console.WriteLine("\"{0}\" starts with a vowel", v);
}


на флюенте легко переписывается в виде
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
foreach(var s in new[]
      {
        "A penny saved is a penny earned.",
        "The early bird catches the worm.",
        "The pen is mightier than the sword." 
      }
        .SelectMany(s=>s.Split(' '))
        .Where(s=>new [] {'a','e','i','o','u'}
        .Any(c=>s.ToLower()[0]==c))
    )
  Console.WriteLine("\"{0}\" starts with a vowel", s);


P.S. Во всех случаях использую флюент - он лично для меня просто нагляднее.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871005
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныP.S. Во всех случаях использую флюент - он лично для меня просто нагляднее.
А для меня - нет. Я использую флюент только в очевидных случаях, когда точно знаю, что ошибки в логике нет.
У меня мышление такое - императивный подход мне ближе.
:-)

Чужие флюенты мне читать сложно - если вдруг он не сделал, что ожидалось - начинаю разделять, чтобы выцепить где проблема.
Еще по началу (сейчас уже меньше нужно, привык), писал имя переменной (и во флюенте тоже) с префиксом each (from eachItem in Items) - тоже помогает не париться, что же имеется в виду - при написании условий ниже. Само предложение выглядит уже совсем по человечески.
:-)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871024
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предпочитаю через лямбды. Трудно сказать почему, наверно, на SQL всё равно не сильно похож (from в начале и т. п.), а из общего стиля кода выбивается. Join и GroupJoin пользуюсь нередко.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871034
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Сон Веры ПавловныP.S. Во всех случаях использую флюент - он лично для меня просто нагляднее.
А для меня - нет. Я использую флюент только в очевидных случаях, когда точно знаю, что ошибки в логике нет.
У меня мышление такое - императивный подход мне ближе.
:-)Если уж на то пошло, то к императиву ближе как раз флюент, а сахар - к декларативу.
Но по сути они декларативны оба, лишь синтаксис разный.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871051
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

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

оба они императивны
надо четко указать - что , откуда, как ... вытащить

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

оба они императивны
надо четко указать - что , откуда, как ... вытащить
Оба они декларативны, ибо нужно указывать что вытащить, но не как.

P. S. Использую оба подхода, иногда вперемешку.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871164
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВViPRosAntonariy,

оба они императивны
надо четко указать - что , откуда, как ... вытащить
Оба они декларативны, ибо нужно указывать что вытащить, но не как .Именно.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871183
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS
Сам чаще пишу флюент просто потому что основная функция - FirstOrDefault :)
А если нужно отправить портянку в json, то сахар, потому что в sql меньше знаков препинания и прочего синтаксического "мусора", ради которого нужно лишний раз пинать шифт. Эргономика.

А подсказки выходят везде.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871220
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВViPRosAntonariy,

оба они императивны
надо четко указать - что , откуда, как ... вытащить
Оба они декларативны, ибо нужно указывать что вытащить, но не как.

P. S. Использую оба подхода, иногда вперемешку.
что это и есть что
ты что пишешь - select (a,b,c)?
или всеж добавляешь фром, джойн и т.д.? - это императив (приказ, как)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871222
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

СКЛ - императивный язык
пролог - нет (концептуальная часть)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871240
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предпочитаю флюент, по той причине что работаю в проектах, где параллельно работают и другие программисты (к примеру знающие c# и не знающие T-SQL).
Плюс флюент читаю намного проще нежели sql синтаксис.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871241
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosчто это и есть что
ты что пишешь - select (a,b,c)?
или всеж добавляешь фром, джойн и т.д.? - это императив (приказ, как)
Я говорю выведи мне такие то поля, применив такие то соединения, условия или там группировки и получаю это.
При императивном подходе, я сам прибираю данные и получаю нужный результат.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            var arr = new[] {1, 3, 4, 5, 6, 7, 8, 9, 2};
            //императивный, явно указываю что делать
            List<int> res = new List<int>();
            for (int i = 0; i < arr.Length; i++)
            {
                var tmp = arr[i];
                if (tmp > 1 && tmp%2 == 1)
                    res.Add(tmp);
            }
            //декларативный, дай мне то то, и пофиг как ты это сделаешь
            var res1 = arr.Where(x => x > 1 && x%2 == 1);
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871242
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosСКЛ - императивный языкхорош гнать уже: http://progopedia.ru/paradigm/declarative/
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871244
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser программисты (к примеру знающие c# и не знающие T-SQL).
Как такое вообще возможно? Гнать таких поганой метлой, простейший то синтаксис должны знать!
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871257
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВLameUser программисты (к примеру знающие c# и не знающие T-SQL).
Как такое вообще возможно? Гнать таких поганой метлой, простейший то синтаксис должны знать!

но нам же простейший синтаксис не интересен, когда мы флюентом не можем обойтись.
на счет обучения - всему свое время :).


Еще чисто визуально бесит SQL синтаксис в коде, т.к. у нас есть правила оформления кода (создавались еще до LINQ).
Хоть они и дубовые, зато можно разбираться в чужом коде достаточно легко, если он оформлен по правилам.

Особенно бесит миксованный синтаксис, например:

Код: c#
1.
2.
3.
4.
5.
6.
var query =
  from c in db.Customers
  let totalSpend = c.Purchases.Sum (p => p.Price)    // Method syntax here
  where totalSpend > 1000
  from p in c.Purchases
  select new { p.Description, totalSpend, c.Address.State };
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871263
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПокажи для left join ?

зы: join стараемся не использовать, стараемся пользоваться ассоциациями.

В последнем проекте вот что использую:

https://github.com/thomaslevesque/Linq.Extras

Это круть. А могли бы предусмотреть сразу и не пришлось бы так корячиться.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871264
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyViPRosСКЛ - императивный языкхорош гнать уже: http://progopedia.ru/paradigm/declarative/
да пофиг что там на заборе
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871268
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВViPRosчто это и есть что
ты что пишешь - select (a,b,c)?
или всеж добавляешь фром, джойн и т.д.? - это императив (приказ, как)
Я говорю выведи мне такие то поля, применив такие то соединения, условия или там группировки и получаю это.
При императивном подходе, я сам прибираю данные и получаю нужный результат.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            var arr = new[] {1, 3, 4, 5, 6, 7, 8, 9, 2};
            //императивный, явно указываю что делать
            List<int> res = new List<int>();
            for (int i = 0; i < arr.Length; i++)
            {
                var tmp = arr[i];
                if (tmp > 1 && tmp%2 == 1)
                    res.Add(tmp);
            }
            //декларативный, дай мне то то, и пофиг как ты это сделаешь
            var res1 = arr.Where(x => x > 1 && x%2 == 1);


ты можешь это обернуть в метод и вызвать (применить метод такой то) от этого твой код не станет декларативным
декларация - желание, а не путь
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871271
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныПросто потому что во флюенте let не нужен - там есть такие вещи, как SelectMany, или возможность использовать в теле методов анонимные программные блоки. Например, msdn'овский пример про let:

Пример какой-то не очевидный. Тут let не особо нужен. Преимущества let становятся видны отчётливо самым не вооружённым глазом, когда начинаешь работать с типами и атрибутами в Reflection — если использовать там флюент, то можно мозг сломать, читая конструкции запросов. Не знаю, я уважаю чувства разработчиков, которым это придётся сопровождать и считаю, что иногда можно поступиться своими привычками в пользу универсальности сопровождения. Чем читабельнее код (не только для себя, но и для остальных) -- тем лучше.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871274
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserОсобенно бесит миксованный синтаксис, например:

Код: c#
1.
2.
3.
4.
5.
6.
var query =
  from c in db.Customers
  let totalSpend = c.Purchases.Sum (p => p.Price)    // Method syntax here
  where totalSpend > 1000
  from p in c.Purchases
  select new { p.Description, totalSpend, c.Address.State };




Не знаю почему он бесит, но лично я вижу, что мысль выражена кристально ясно, чётко и легко читается, очень легко, так как код не перегружен знаками препинания и скобками. Что ещё надо?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871326
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЧем читабельнее код (не только для себя, но и для остальных) -- тем лучше.
Читаемость кода - штука субъективная, и зависящая, например, от привычки к тому или иному виду синтаксиса. Как вы могли убедиться по постингам выше, флюент-синтаксис более удобочитаемым считаю не один я.
Что же до особо сложных и мозголомных конструкций внутри linq - я вообще против них, безотносительно синтаксиса, поскольку они идудт вразрез с принципом intention revealing. Только вынесение таких кусков в отдельные методы, и использование в простых linq-запросах.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871331
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А часто пользуюсь длинными и вложенными запросами. Только при определённой длине ставлю скобки на разных строках подобно операторным скобкам, чтоб были понятны границы вложенных запросов/конструкций.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871333
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только Fluent.
По работе приходится писать не только на C#. Лямбды - они и в Индонезии лямбды :)

А разбираться в сахаре, прибитом гвоздями к конкретному языку - расточительство ))
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871350
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныhVosttЧем читабельнее код (не только для себя, но и для остальных) -- тем лучше.
Читаемость кода - штука субъективная, и зависящая, например, от привычки к тому или иному виду синтаксиса. Как вы могли убедиться по постингам выше, флюент-синтаксис более удобочитаемым считаю не один я.
Что же до особо сложных и мозголомных конструкций внутри linq - я вообще против них, безотносительно синтаксиса, поскольку они идудт вразрез с принципом intention revealing. Только вынесение таких кусков в отдельные методы, и использование в простых linq-запросах.

Не вижу причин не пользоваться нативными средствами самого языка, если в отдельных случаях это может улучшить вид и читаемость кода. Принципы «а я вот так вот привык» и «а мне вот так вот больше нравится» — они конечно в определённой степени уместны (для личных разработок), но в целом — не серьёзные, детские и губительные.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871352
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosда пофиг что там на заборе
ViPRosты можешь это обернуть в метод и вызвать (применить метод такой то) от этого твой код не станет декларативным
декларация - желание, а не путьто есть ты отрицаешь общепринятое классификацию продуктов и толкование терминов, и напитываешь их соками мозга с претензией на сакральный смысл?
гениально, чо.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871359
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Вот, кстати, интересное наблюдение. Чаще всего я использую флюент, так как чаще всего выражения короткие и связаны всего с одной коллекцией. Но иногда я использую сахар, при чём это уже выработано на интуитивном уровне, я не сижу и не размышляю, что же выбрать и не переписываю флюент в сахар или наоборот. Когда представляешь себя запрос и его сложность становится понятно, какой способ выбрать и никаких проблем в связи с этим не испытываю, поэтому у меня нет длиннющих флюент-цепочек, и я вообще никогда не применяю флюентный Join, так как назвать это иначе, чем «убожество» просто нельзя.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871372
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вижу ничего такого в Join через лямбды, сам часто его пишу. Если есть корпоративные стандарты и по этому вопросу тоже, конечно, другое дело, но если их по этому вопросу нет, то это кому как.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871385
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyViPRosда пофиг что там на заборе
ViPRosты можешь это обернуть в метод и вызвать (применить метод такой то) от этого твой код не станет декларативным
декларация - желание, а не путьто есть ты отрицаешь общепринятое классификацию продуктов и толкование терминов, и напитываешь их соками мозга с претензией на сакральный смысл?
гениально, чо.
не знаю кем это общепринятые
в пролгое я просто справшиваю и получаю ответ
а в скл я спрашиваю и указываю путь вплоть до On a=b и т.д. вплоть до алгоритма соспоставления массивов
если кто то считает это декларативностью то тот кретин
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871390
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81Не вижу ничего такого в Join через лямбды, сам часто его пишу. Если есть корпоративные стандарты и по этому вопросу тоже, конечно, другое дело, но если их по этому вопросу нет, то это кому как.

Затрудняет чтение.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var dealercontacts = 
   from c in DealerContact
   join d in Dealer on c.DealerId equals d.Id
   select c;

var dealerContracts = 
   DealerContact.Join(Dealer, 
      c => c.DealerId,
      d => d.DealerId,
      (c, d) => c);



Ещё вроде ничё так, да?

А теперь изобрази вот это во флюенте, потом дай кому-нибудь прочесть:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
var results = 
              from c in db.Companies
              join cn in db.Countries on c.CountryID equals cn.ID
              join ct in db.Cities on c.CityID equals ct.ID
              join sect in db.Sectors on c.SectorID equals sect.ID
              where c.CountryID == cn.ID
                   && c.CityID == ct.ID
                   && c.SectorID == company.SectorID
                   && company.SectorID == sect.ID
              select new { 
                  country = cn.Name, 
                  city = ct.Name, 
                  c.ID, 
                  c.Name, 
                  c.Address1, 
                  c.Address2, 
                  c.Address3, 
                  c.CountryID, 
                  c.CityID, 
                  c.Region, 
                  c.PostCode, 
                  c.Telephone, 
                  c.Website, 
                  c.SectorID, 
                  Status = (ContactStatus)c.StatusID, 
                  sector = sect.Name };

return results.ToList();
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871394
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНе вижу причин не пользоваться нативными средствами самого языка
Ээ.. Т.е. по-вашему, флюент - это не нативный синтаксис? А чей тогда? Откуда он взялся? И почему и запросный, и флюентный синтаксис транслируются в IL во всё те же анонимные делегаты, классы, и коллекции, при прочих равных выдавая почти идентичный IL-код?
Код: c#
1.
2.
3.
4.
5.
var numbers = new [] {1};
foreach(var n in from n1 in numbers select n1)
  Console.WriteLine(n);
foreach(var n in numbers.Select(n1=>n1))
  Console.WriteLine(n);


IL
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
.method private hidebysig static void  Main() cil managed
{
  .entrypoint
  // Code size       176 (0xb0)
  .maxstack  4
  .locals init ([0] int32[] numbers,
           [1] int32 n,
           [2] int32 V_2,
           [3] int32[] CS$0$0000,
           [4] class [mscorlib]System.Collections.Generic.IEnumerator`1<int32> CS$5$0001,
           [5] class [mscorlib]System.Collections.Generic.IEnumerator`1<int32> CS$5$0002)
  IL_0000:  ldc.i4.1
  IL_0001:  newarr     [mscorlib]System.Int32
  IL_0006:  stloc.3
  IL_0007:  ldloc.3
  IL_0008:  ldc.i4.0
  IL_0009:  ldc.i4.1
  IL_000a:  stelem.i4
  IL_000b:  ldloc.3
  IL_000c:  stloc.0
  IL_000d:  ldloc.0
  IL_000e:  ldsfld     class [mscorlib]System.Func`2<int32,int32> test.Program::'CS$<>9__CachedAnonymousMethodDelegate2'
  IL_0013:  brtrue.s   IL_0026
  IL_0015:  ldnull
  IL_0016:  ldftn      int32 test.Program::'<Main>b__0'(int32)
  IL_001c:  newobj     instance void class [mscorlib]System.Func`2<int32,int32>::.ctor(object,
                                                                                       native int)
  IL_0021:  stsfld     class [mscorlib]System.Func`2<int32,int32> test.Program::'CS$<>9__CachedAnonymousMethodDelegate2'
  IL_0026:  ldsfld     class [mscorlib]System.Func`2<int32,int32> test.Program::'CS$<>9__CachedAnonymousMethodDelegate2'
  IL_002b:  call       class [mscorlib]System.Collections.Generic.IEnumerable`1<!!1> [System.Core]System.Linq.Enumerable::Select<int32,int32>(class [mscorlib]System.Collections.Generic.IEnumerable`1<!!0>,
                                                                                                                                              class [mscorlib]System.Func`2<!!0,!!1>)
  IL_0030:  callvirt   instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [mscorlib]System.Collections.Generic.IEnumerable`1<int32>::GetEnumerator()
  IL_0035:  stloc.s    CS$5$0001
  .try
  {
    IL_0037:  br.s       IL_0047
    IL_0039:  ldloc.s    CS$5$0001
    IL_003b:  callvirt   instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<int32>::get_Current()
    IL_0040:  stloc.1
    IL_0041:  ldloc.1
    IL_0042:  call       void [mscorlib]System.Console::WriteLine(int32)
    IL_0047:  ldloc.s    CS$5$0001
    IL_0049:  callvirt   instance bool [mscorlib]System.Collections.IEnumerator::MoveNext()
    IL_004e:  brtrue.s   IL_0039
    IL_0050:  leave.s    IL_005e
  }  // end .try
  finally
  {
    IL_0052:  ldloc.s    CS$5$0001
    IL_0054:  brfalse.s  IL_005d
    IL_0056:  ldloc.s    CS$5$0001
    IL_0058:  callvirt   instance void [mscorlib]System.IDisposable::Dispose()
    IL_005d:  endfinally
  }  // end handler
  IL_005e:  ldloc.0
  IL_005f:  ldsfld     class [mscorlib]System.Func`2<int32,int32> test.Program::'CS$<>9__CachedAnonymousMethodDelegate3'
  IL_0064:  brtrue.s   IL_0077
  IL_0066:  ldnull
  IL_0067:  ldftn      int32 test.Program::'<Main>b__1'(int32)
  IL_006d:  newobj     instance void class [mscorlib]System.Func`2<int32,int32>::.ctor(object,
                                                                                       native int)
  IL_0072:  stsfld     class [mscorlib]System.Func`2<int32,int32> test.Program::'CS$<>9__CachedAnonymousMethodDelegate3'
  IL_0077:  ldsfld     class [mscorlib]System.Func`2<int32,int32> test.Program::'CS$<>9__CachedAnonymousMethodDelegate3'
  IL_007c:  call       class [mscorlib]System.Collections.Generic.IEnumerable`1<!!1> [System.Core]System.Linq.Enumerable::Select<int32,int32>(class [mscorlib]System.Collections.Generic.IEnumerable`1<!!0>,
                                                                                                                                              class [mscorlib]System.Func`2<!!0,!!1>)
  IL_0081:  callvirt   instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [mscorlib]System.Collections.Generic.IEnumerable`1<int32>::GetEnumerator()
  IL_0086:  stloc.s    CS$5$0002
  .try
  {
    IL_0088:  br.s       IL_0098
    IL_008a:  ldloc.s    CS$5$0002
    IL_008c:  callvirt   instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<int32>::get_Current()
    IL_0091:  stloc.2
    IL_0092:  ldloc.2
    IL_0093:  call       void [mscorlib]System.Console::WriteLine(int32)
    IL_0098:  ldloc.s    CS$5$0002
    IL_009a:  callvirt   instance bool [mscorlib]System.Collections.IEnumerator::MoveNext()
    IL_009f:  brtrue.s   IL_008a
    IL_00a1:  leave.s    IL_00af
  }  // end .try
  finally
  {
    IL_00a3:  ldloc.s    CS$5$0002
    IL_00a5:  brfalse.s  IL_00ae
    IL_00a7:  ldloc.s    CS$5$0002
    IL_00a9:  callvirt   instance void [mscorlib]System.IDisposable::Dispose()
    IL_00ae:  endfinally
  }  // end handler
  IL_00af:  ret
} // end of method Program::Main


hVosttПринципы «а я вот так вот привык» и «а мне вот так вот больше нравится» — они конечно в определённой степени уместны (для личных разработок), но в целом — не серьёзные, детские и губительные.
Я что-то писал про корреляцию моих личных предпочтений с принятыми на моем месте работы стандартами кодирования?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871410
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныЭэ.. Т.е. по-вашему, флюент - это не нативный синтаксис? А чей тогда? Откуда он взялся? И почему и запросный, и флюентный синтаксис транслируются в IL во всё те же анонимные делегаты, классы, и коллекции, при прочих равных выдавая почти идентичный IL-код?

Всё правильно, а я что сказал? Я сказал только про синтаксис, а не во что он траслируется. И, как обычно, сравнивать что же таки лучше (флюент или сахар) без конкретных примеров — занятие бесперспективное. Покажи мне запрос, и я точно скажу что в данном случае будет лучше — об этом я говорил.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871415
Span Quote
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извращенцы
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871417
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttIlya81Не вижу ничего такого в Join через лямбды, сам часто его пишу. Если есть корпоративные стандарты и по этому вопросу тоже, конечно, другое дело, но если их по этому вопросу нет, то это кому как.

Затрудняет чтение.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var dealercontacts = 
   from c in DealerContact
   join d in Dealer on c.DealerId equals d.Id
   select c;

var dealerContracts = 
   DealerContact.Join(Dealer, 
      c => c.DealerId,
      d => d.DealerId,
      (c, d) => c);



Ещё вроде ничё так, да?

А теперь изобрази вот это во флюенте, потом дай кому-нибудь прочесть:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
var results = 
              from c in db.Companies
              join cn in db.Countries on c.CountryID equals cn.ID
              join ct in db.Cities on c.CityID equals ct.ID
              join sect in db.Sectors on c.SectorID equals sect.ID
              where c.CountryID == cn.ID
                   && c.CityID == ct.ID
                   && c.SectorID == company.SectorID
                   && company.SectorID == sect.ID
              select new { 
                  country = cn.Name, 
                  city = ct.Name, 
                  c.ID, 
                  c.Name, 
                  c.Address1, 
                  c.Address2, 
                  c.Address3, 
                  c.CountryID, 
                  c.CityID, 
                  c.Region, 
                  c.PostCode, 
                  c.Telephone, 
                  c.Website, 
                  c.SectorID, 
                  Status = (ContactStatus)c.StatusID, 
                  sector = sect.Name };

return results.ToList();


Вообще-то да, видать, мне чаще больше одного join (как в верхнем примере) редко случается использовать.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871431
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttIlya81Не вижу ничего такого в Join через лямбды, сам часто его пишу. Если есть корпоративные стандарты и по этому вопросу тоже, конечно, другое дело, но если их по этому вопросу нет, то это кому как.

Затрудняет чтение.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var dealercontacts = 
   from c in DealerContact
   join d in Dealer on c.DealerId equals d.Id
   select c;

var dealerContracts = 
   DealerContact.Join(Dealer, 
      c => c.DealerId,
      d => d.DealerId,
      (c, d) => c);



Ещё вроде ничё так, да?

А теперь изобрази вот это во флюенте, потом дай кому-нибудь прочесть:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
var results = 
              from c in db.Companies
              join cn in db.Countries on c.CountryID equals cn.ID
              join ct in db.Cities on c.CityID equals ct.ID
              join sect in db.Sectors on c.SectorID equals sect.ID
              where c.CountryID == cn.ID
                   && c.CityID == ct.ID
                   && c.SectorID == company.SectorID
                   && company.SectorID == sect.ID
              select new { 
                  country = cn.Name, 
                  city = ct.Name, 
                  c.ID, 
                  c.Name, 
                  c.Address1, 
                  c.Address2, 
                  c.Address3, 
                  c.CountryID, 
                  c.CityID, 
                  c.Region, 
                  c.PostCode, 
                  c.Telephone, 
                  c.Website, 
                  c.SectorID, 
                  Status = (ContactStatus)c.StatusID, 
                  sector = sect.Name };

return results.ToList();




Мне вот не понятно зачем это писать, если это должно быть автоматом в самом джойне:

Код: c#
1.
2.
3.
4.
   where c.CountryID == cn.ID
                   && c.CityID == ct.ID
                   && c.SectorID == company.SectorID
                   && company.SectorID == sect.ID



В джойне ведь уже должна быть автомат. фильтрация т.к. ты джойниш по этим полям.

Код: c#
1.
2.
3.
4.
5.
var results = 
              from c in db.Companies
              join cn in db.Countries on c.CountryID equals cn.ID
              join ct in db.Cities on c.CityID equals ct.ID
              join sect in db.Sectors on c.SectorID equals sect.ID




Это кривой запрос или так надо писать по техническим причинам?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871465
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUserЭто кривой запрос или так надо писать по техническим причинам?
это он для верности :) (первый раз джойнил)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871492
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КПокажи для left join ?

зы: join стараемся не использовать, стараемся пользоваться ассоциациями.

В последнем проекте вот что использую:

https://github.com/thomaslevesque/Linq.Extras

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

Вот, кстати, интересное наблюдение. Чаще всего я использую флюент, так как чаще всего выражения короткие и связаны всего с одной коллекцией. Но иногда я использую сахар, при чём это уже выработано на интуитивном уровне, я не сижу и не размышляю, что же выбрать и не переписываю флюент в сахар или наоборот. Когда представляешь себя запрос и его сложность становится понятно, какой способ выбрать и никаких проблем в связи с этим не испытываю, поэтому у меня нет длиннющих флюент-цепочек, и я вообще никогда не применяю флюентный Join, так как назвать это иначе, чем «убожество» просто нельзя.++

Тут вполне жизненный пример. В нём комбинируются оба способа написания, в зависимости от ситуации.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871504
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81,
Брюки
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 from c in db.Companies
              join cn in db.Countries on c.CountryID equals cn.ID
              join ct in db.Cities on c.CityID equals ct.ID
              join sect in db.Sectors on c.SectorID equals sect.ID
              where c.CountryID == cn.ID
                   && c.CityID == ct.ID
                   && c.SectorID == company.SectorID
                   && company.SectorID == sect.ID


плавно превращаются в шорты
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 from c in db.Companies
              from cn in db.Countries
              from ct in db.Cities
              from sect in db.Sectors
              where c.CountryID == cn.ID
                   && c.CityID == ct.ID
                   && c.SectorID == company.SectorID
                   && company.SectorID == sect.ID
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871509
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж лучше where убрать, а второй вариант - надеяться только на оптимизатор, что он не станет генерировать полное декартово произведение. join всё ж явно подразумевает, что полное декартово произведение не понадобится.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871516
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81Уж лучше where убрать, а второй вариант - надеяться только на оптимизатор, что он не станет генерировать полное декартово произведение. join всё ж явно подразумевает, что полное декартово произведение не понадобится.
Тут использование where много гибче. Например можно использовать не строгое равенство, а например >. Да и комбинации полей.
Что касается SqlServer и Oracle, они тут не оплошают. За остальных не скажу.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871530
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЧто касается SqlServer и Oracle, они тут не оплошают. За остальных не скажу.
Речь об IQueryable или IEnumerable? Я LINQ часто применяю и при запросе коллекций логического слоя, там вообще БД может не быть.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871555
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81 Я LINQ часто применяю и при запросе коллекций логического слоя, там вообще БД может не быть.
Тогда о каком оптимизаторе речь? Там вся надежда на прямоту рук и ParallelEnumerable.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871601
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВIlya81 Я LINQ часто применяю и при запросе коллекций логического слоя, там вообще БД может не быть.
Тогда о каком оптимизаторе речь? Там вся надежда на прямоту рук и ParallelEnumerable.
О .Net'овском, который по идее должен обрабатывать в т. ч. механизм отложенных запросов, в т. ч. для классов Enumerable и ParallelEnumerable.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871618
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81О .Net'овском, который по идее должен обрабатывать в т. ч. механизм отложенных запросов, в т. ч. для классов Enumerable и ParallelEnumerable.
Такого пока не придумали :)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38871619
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К Тут вполне жизненный пример. В нём комбинируются оба способа написания, в зависимости от ситуации.

Вот-вот, об этом я и говорил, в сахаре такие запросы легко читаются, прям как в SQL, а в цепочке они были бы перегружены оверхедом с лямбдами, точками, скобками (все смешалось в кучу: люди, кони...))
...
Рейтинг: 0 / 0
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
LINQ: кто какой синтаксис использует?
    #38873918
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

А-а-а-а-а-ха-ха-ха-ха-ха!!!!!!!!!!!

Слив защитан!!!!!!!!

Ты бы хоть проверил, прежде чем выложить! )))))))))))))
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873921
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял, ты просто не знаешь чем отличается full join от cross join, видимо аббревиатуру SQL ты видел только в названии форума, на котором сидишь.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873926
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУ,

А-а-а-а-а-ха-ха-ха-ха-ха!!!!!!!!!!!

Слив защитан!!!!!!!!
Обоснуй.

Shocker.ProТы бы хоть проверил, прежде чем выложить! )))))))))))))
Да.

Shocker.ProЯ понял, ты просто не знаешь чем отличается full join от cross join, видимо аббревиатуру SQL ты видел только в названии форума, на котором сидишь.
Ты вообще дурак? Причем тут cross join?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873927
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОбоснуй.сколько записей у тебя на выходе? А сколько должно быть при full join? Открывай учебник для первого класса по sql и читай-читай-читай.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873929
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУОбоснуй.сколько записей у тебя на выходе? А сколько должно быть при full join? Открывай учебник для первого класса по sql и читай-читай-читай.
Ты реально дибил?

Вот код. В первом случае - обычный full outer join, во втором - cross join. Запусти и почувствуй разницу.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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 }, new B { Id = 5, Age = 30 } };

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);

// full outer join
var q3 = q1.Union(q2);

// cross join
var q4 = from ax1 in ax
        from ay1 in ay
        select new { a1 = ax1.Id, a2 = ax1.Name, a3 = ay1.Id, a4 = ay1.Age };



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

http://codearticles.ru/articles/925

Shocker.Pro, тебе кур пасти надо, а не программировать.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873933
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Ну понятно, вместо того, чтобы честно признать свою неправоту, как всегда полил грязью других и съехал.

Правильный ответ на вопрос (который ты предпочел слить и не ответил) - ТРИ !
(для первого примера), это скажет тебе любой школьник, изучающий sql два дня.

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

Shocker.ProПравильный ответ на вопрос (который ты предпочел слить и не ответил) - ТРИ !
(для первого примера), это скажет тебе любой школьник, изучающий sql два дня.

Нет смысла продолжать, это апофеоз твоей упертой тупости.
Убей себя об стену. Упрощаем пример.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var x = new[] { 1, 2, };
var y = new[] { 1, 2, 3,  };

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

// full outer join (1, 2, 3), итого 3 строки
var q3 = q1.Union(q2);

// cross join (1;1, 1;2, 1;3, 2;1, 2;2, 2;3), итого 6 строк
var q4 = from x1 in x
            from y1 in y
            select new { x1, y1 };



Итого, full outer вернет 3 записи, cross join вернет 6 записей. Где твоя логика? Ты называл мой запрос с Union кросс джойном. Ты реально дятел?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873935
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только опять не сливайся и не уводи в сторону. Ответь конкретно по этому коду, упростил запрос максимально. Жду ответа.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873936
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУУпрощаем пример.Дубовая голова. Это не упрощенный, это вырожденный пример. Я написал конкретную простую задачу. Ты её решить не смог , не упростив до уровня детского сада.

Придется тебе давать начальные уроки по SQL.
Втыкай до просветления
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table #A (Id int, Name nvarchar(max))
create table #B (Id int, Age int)

INSERT #A VALUES (1, 'A')
INSERT #A VALUES (2, 'B')
INSERT #B VALUES (1, 10)
INSERT #B VALUES (3, 20)

SELECT *
FROM #A FULL JOIN #B ON #A.Id=#B.Id

drop table #A
drop table #B


предвосхищая твои наивные попытки опять съехать с темы и попенять мне на звездочку в селекте, можешь сразу заменить на
Код: sql
1.
SELECT ISNULL(#A.Id, #B.Id), #A.Name, #B.Age

вообще, что там в селекте - насрать, это конечная выборка, она может быть любой
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873941
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУУпрощаем пример.Дубовая голова. Это не упрощенный, это вырожденный пример. Я написал конкретную простую задачу. Ты её решить не смог , не упростив до уровня детского сада.
Дурикло картонное, вот решение твоего примера 17232964 Что не нравится? Ты его вообще запускал или как всегда тупым жалом водил?

Shocker.ProПридется тебе давать начальные уроки по SQL.
Втыкай до просветления
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table #A (Id int, Name nvarchar(max))
create table #B (Id int, Age int)

INSERT #A VALUES (1, 'A')
INSERT #A VALUES (2, 'B')
INSERT #B VALUES (1, 10)
INSERT #B VALUES (3, 20)

SELECT *
FROM #A FULL JOIN #B ON #A.Id=#B.Id

drop table #A
drop table #B


предвосхищая твои наивные попытки опять съехать с темы и попенять мне на звездочку в селекте, можешь сразу заменить на
Код: sql
1.
SELECT ISNULL(#A.Id, #B.Id), #A.Name, #B.Age

вообще, что там в селекте - насрать, это конечная выборка, она может быть любой
Днище, ты даже тестовый пример на транзакте не можешь нармально высрать, зачем тут CREATE и DROP таблиц?

declare @A table (Id int, Name nvarchar(max))
declare @B table (Id int, Age int)

Код: c#
1.
2.
3.
4.
5.
6.
INSERT @A VALUES (1, 'A')
INSERT @A VALUES (2, 'B')
INSERT @B VALUES (1, 10)
INSERT @B VALUES (3, 20)

SELECT * FROM @A A FULL JOIN @B B ON A.Id=B.Id



Во-вторых, зачем ты сравниваешь возможности транзакта и LINQ? Это вообще разные по сути своей вещи. То, что в транзакте есть clause FULL JOIN, вовсе не обязывает её иметь в LINQ.

Ты вообще о чем? Чем не понравился код на LINQ, который решает эту задачу?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873942
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ты опять уводишь от темы. Выше я написал вот этот код. Ты ляпнул, что Union - это кросс джойн. Тебе не стыдно было так обосраться-то, "знаток" сиквела?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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 }, new B { Id = 5, Age = 30 } };

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);

// full outer join
var q3 = q1.Union(q2);

// cross join
var q4 = from ax1 in ax
        from ay1 in ay
        select new { a1 = ax1.Id, a2 = ax1.Name, a3 = ay1.Id, a4 = ay1.Age };
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873944
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, вот решение твоего примера 17232964 Что не нравится?тем, что оно не делает FullJoin, вот, собственно, и все
МСУТо, что в транзакте есть clause FULL JOIN, вовсе не обязывает её иметь в LINQ.об этом, собственно и сожалеет Хвост. А ты с чего-то вдруг влез со свиным рылом, да и обосрался по полной. А теперь говоришь то же самое, что и Хвост, лишь бы не признавать, что в дерьмо вляпался.
МСУЧем не понравился код на LINQ, который решает эту задачу?Он ее не решает. Ты даже три от четырех отличить не можешь (четырех от пяти во втором случае). Тебя в детском саду недоучили
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873945
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы ляпнул, что Union - это кросс джойнэто все твои грибы, я такого не говорил. Я говорил, что Union - это по сути union select из sql

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

Shocker.ProМСУТо, что в транзакте есть clause FULL JOIN, вовсе не обязывает её иметь в LINQ.об этом, собственно и сожалеет Хвост.
А зачем он в LINQ, если full outer join можно получить через left + right + union? Ну возьми напиши себе метод, который выполняет эти 3 операции сразу. Полегчало? В LINQ нет и left join, но ни у кого проблем тоже не возникает - GroupJoin или into + DefaultIfEmpty в руки, и всё получится. LINQ это не SQL, дурилко.

Shocker.ProМСУЧем не понравился код на LINQ, который решает эту задачу?Он ее не решает. Ты даже три от четырех отличить не можешь (четырех от пяти во втором случае). Тебя в детском саду недоучили
Еще раз, внятно обоснуй, что он не решает. Напиши, что этот код по твоему мнению должен возвращать.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873951
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУТы ляпнул, что Union - это кросс джойнэто все твои грибы, я такого не говорил.
А ты еще и пи..бол. Вот тут ты это ляпнул 17232905 на мой ответ, что full outer join - это left + right + union.

Shocker.ProЯ говорил, что Union - это по сути union select из sql
Ты это свой бабушке расскажи. Выше ссылка, слова назад не вернешь. Ты ясно и четко сказал, что то, что я написал выше - это кросс джойн. Ты эпический дол..ёб.

Shocker.ProМеня кросс джойн на линке вообще не интересует, это любой дурачок написать может
Как оказалось на деле, далеко не каждый дурачок может написать это

Shocker.ProПроблема в том, что ты ниасилил написать full join, а теперь пытаешься слиться в кросс, мол просил тебя кто его реализовывать.
Проблема в том, что ты не знаешь ни что такое full outer join, ни что такое cross join, ни что такое linq.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873953
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА что должно возвращаться в этом коде?МСУЕще раз, внятно обоснуй, что он не решает. Напиши, что этот код по твоему мнению должен возвращать.я уже написал пример на SQL. Запусти - узнаешь, что он должен возвращать (по мнению любого, кроме тебя).
МСУНу возьми напиши себе метод, который выполняет эти 3 операции сразуну так напиши - ты же пока только пургу гонишь, вместо того, чтобы показать, как правильно делать.

Так в том-то и дело, что придется, что-то писать, какие-то конструкции трехэтажные создавать, хотя нативно можно было реализовать и быстрее и удобнее.
Кроме того, из IQueryable можно получить в SQL-движок LEFT JOIN. Как получить FULL JOIN?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873954
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы ясно и четко сказал, что то, что я написал выше - это кросс джойн.да, и не отказываюсь, ты написал кросс джойн. исправь в моем sql-примере FULL на CROSS (убрав условие объединения) и ты получишь именно этот результат.
Ты просто напросто написал два раза cross join вместо того, чтобы написать full join и cross join. Просто твой куриный мозг неспособен понять, что выбранные на выходе поля не имеют отношения к способу объединения записей. Если бы ты хоть немножко знал sql, тебе бы не пришлось это объяснять.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873959
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще то в примере от МСУ действительно немного напутано. Full join вовсе не объединение left и right.
Для Full будет 3 записи, для cross - 4.

Упрощенный же пример не показывает сути. Там действительно full вернет 3 записи.

зачем докапываться до drop table - непонятно, табличные переменные появились не так чтобы уж давно, вариант с временными таблицами ничем не плох

Вот иллюстрация отличия одного джойна от другого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
declare @t1 table (id int primary key, name varchar(10))
declare @t2 table (id int primary key, name varchar(10))

insert into @t1 (id, name) values (1, 'Вася'),(2, 'Макар'),(4, 'Петя')
insert into @t2 (id, name) values (1, 'Вася'),(3, 'Иван'),(4, 'Петя'),(5, 'Никита')

select * from @t1 t1 full outer join @t2 t2 on t1.id = t2.id
select * from @t1 t1 cross join @t2 t2 



Код от МСУ в спойлере, он неправильно отображает full join
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
        static void Main(string[] args)
        {
            var ax = new[] { new A { Id = 1, Name = "Вася" }, new A { Id = 2, Name = "Макар" }, new A { Id = 4, Name = "Петя" } };
            var ay = new[] { new B { Id = 1, Age = 10 /*Вася*/}, new B { Id = 3, Age = 20 /*Иван*/}, new B { Id = 4, Age = 30 /*Петя*/ }, new B { Id = 5, Age = 40 /*Никита*/ } };

            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);

            // full outer join
            var q3 = q1.Union(q2);

            Console.WriteLine("full outer join");
            foreach (var t in q3)
                Console.WriteLine("{0}, {1}, {2}", t.Id, t.Name, t.Age);

            // cross join
            var q4 = from ax1 in ax
                     from ay1 in ay
                     select new { a1 = ax1.Id, a2 = ax1.Name, a3 = ay1.Id, a4 = ay1.Age };

            Console.WriteLine("cross join");
            foreach (var t in q4)
                Console.WriteLine("{0}, {1}, {2}, {3}", t.a1, t.a2, t.a3, t.a4);

            Console.ReadLine();
        }
    }

    internal class B
    {
        public int Age {get; set; }

        public int Id { get; set; }
    }

    internal class A
    {
        public int Id { get; set; }

        public string Name { get; set; }
    }



Вот мой вариант, на качество кода не претендую, но ответ вроде правильный:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            var ax = new[] { new A { Id = 1, Name = "Вася" }, new A { Id = 2, Name = "Макар" }, new A { Id = 4, Name = "Петя" } };
            var ay = new[] { new B { Id = 1, Age = 10 /*Вася*/}, new B { Id = 3, Age = 20 /*Иван*/}, new B { Id = 4, Age = 30 /*Петя*/ }, new B { Id = 5, Age = 40 /*Никита*/ } };

            var exceptAY = ax.Where(a => false == ay.Any(y => y.Id == a.Id)).Select(a => new {a.Id, a.Name, Age = -1});
            var exceptAX = ay.Where(b => false == ax.Any(x => x.Id == b.Id)).Select(a => new {a.Id, Name = String.Empty, a.Age});
            var unionAXAY = ax.Join(ay, a => a.Id, b => b.Id, (a, b) => new {a.Id, a.Name, b.Age});

            var result = exceptAY.Union(exceptAX).Union(unionAXAY);
            foreach (var res in result)
                Console.WriteLine("{0}, {1}, {2}", res.Id, res.Name, res.Age);
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873966
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Shocker.Pro]МСУА что должно возвращаться в этом коде?МСУЕще раз, внятно обоснуй, что он не решает. Напиши, что этот код по твоему мнению должен возвращать.я уже написал пример на SQL. Запусти - узнаешь, что он должен возвращать (по мнению любого, кроме тебя)./quot]
Ты код левый написал

Мой

Код: c#
1.
2.
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 }, new B { Id = 5, Age = 30 } };



Твой

Код: c#
1.
2.
3.
4.
INSERT @A VALUES (1, 'A')
INSERT @A VALUES (2, 'B')
INSERT @B VALUES (1, 10)
INSERT @B VALUES (3, 20)



Разницу видишь?

Shocker.ProМСУНу возьми напиши себе метод, который выполняет эти 3 операции сразуну так напиши - ты же пока только пургу гонишь, вместо того, чтобы показать, как правильно делать.
Зачем мне его писать? Тебе же нужно что-то готовое.

Shocker.ProКроме того, из IQueryable можно получить в SQL-движок LEFT JOIN. Как получить FULL JOIN?
Я тебе уже 10 раз писал. Делай left, делай right, делай union. Это будет full. Если речь о готовой функции в EF, то такой нет.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873968
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУТы ясно и четко сказал, что то, что я написал выше - это кросс джойн.да, и не отказываюсь, ты написал кросс джойн. исправь в моем sql-примере FULL на CROSS (убрав условие объединения) и ты получишь именно этот результат.
Ты просто напросто написал два раза cross join вместо того, чтобы написать full join и cross join. Просто твой куриный мозг неспособен понять, что выбранные на выходе поля не имеют отношения к способу объединения записей. Если бы ты хоть немножко знал sql, тебе бы не пришлось это объяснять.
Я правильно понимаю, что ты утверждаешь, что будет одинаковый результат с одинаковым количеством строк?

Код: c#
1.
2.
3.
4.
5.
6.
7.
// full outer join
var q3 = q1.Union(q2);

// cross join
var q4 = from ax1 in ax
        from ay1 in ay
        select new { a1 = ax1.Id, a2 = ax1.Name, a3 = ay1.Id, a4 = ay1.Age };
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873970
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДелай left, делай right, делай union
Ключевая ошибка.

Full - это все строки из одной таблицы, не имеющиеся в другой + строки из другой таблицы, не имеющиеся в первой, + inner join
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873972
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМойМСУРазницу видишь?я же тебе говорил, что у тебя память девичья. 17232852

впрочем, я не верю, что ты не понимаешь, что мой пример относится к твоему первому коду, а не к второму, ты просто сливаешь за счет того, что пытаешься придраться на пустом месте, вместо того, чтобы решить задачу, которую тебе, видимо, решить слабо.
МСУЗачем мне его писать?затем, чтоМСУБольше всего обижает тот факт, что ты LINQ до сих пор так и не осилил.
докажи, что его осилил ты. Пока что ты трепло.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873973
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Код от МСУ в спойлере, он неправильно отображает full join
Как это не правильно? Вот, всё тоже самое для твоего примера с Васями.

Еще раз: full join = left + right + union.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var x = new[] { new A { Id = 1, Name = "Вася" }, new A { Id = 2, Name = "Макар" }, new A { Id = 4, Name = "Петя" } };
var y = new[] { new A { Id = 1, Name = "Вася" }, new A { Id = 3, Name = "Иван" }, new A { Id = 4, Name = "Петя" }, new A { Id = 5, Name = "Никита" } };

var q1 = x.GroupJoin(y, x1 => x1.Id, y1 => y1.Id, (value, temp) => new { a = value.Id, b = value.Name, c = temp.FirstOrDefault() == null ? null : (int?) temp.FirstOrDefault().Id });
var q2 = y.GroupJoin(x, y1 => y1.Id, x1 => x1.Id, (value, temp) => new { a = value.Id, b = value.Name, c = temp.FirstOrDefault() == null ? null : (int?)temp.FirstOrDefault().Id });

// full outer join
var q3 = q1.Union(q2);

// cross join
var q4 = from ax1 in x
            from ay1 in y
            select new { ax1, ay1 };
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873974
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79МСУДелай left, делай right, делай union
Ключевая ошибка.
Full - это все строки из одной таблицы, не имеющиеся в другой + строки из другой таблицы, не имеющиеся в первой, + inner join
Не ключевая ошибка, ты забыл, что в твоем примере ты уже работаешь с объектами и пытаешься их схлопнуть. См. как сделано у меня с FirstOrDefault. Не забывай про это.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873975
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУМойМСУРазницу видишь?я же тебе говорил, что у тебя память девичья. 17232852
Тут не память, а проблемы с логикой в твоей дырявой голове. После этого кода ты начал спрашивать о кол-ве записей, в первоначальном варианте было 2x2, я же тебе смоделировал 2x3, чтобы не было путаницы с кол-вом записи. И выразил кодом вот тут 17232964
Ты мало того, код не читаешь, так в добавок ты еще днище глупое.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873977
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЯ правильно понимаю, что ты утверждаешь, что будет одинаковый результат с одинаковым количеством строк?да, я не прав
Код: c#
1.
2.
// full outer join
var q3 = q1.Union(q2);

- это таки-да, не кросс, как я уже сказал - это union select. Но, как я уже сказал, кросс меня не интересует, спор начался про full - ты упорно пытаешь увести в сторону
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873978
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУты начал спрашивать о кол-ве записей, в первоначальном варианте было 2x2, я же тебе смоделировал 2x3браво, это бага, а не фича оказывается. Ты не смог решить задачу в простом варианте 2x2, чтобы нормально вернуло три записи, вбросил еще один пример и начал уводить в сторону, зацепившись за мое неосторожное высказывание про кросс. Забудь про кросс, я не прав. Вернись к фулл.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873981
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, нет смысла спорить. Я взял ровно тот код, который ты давал вначале. Он не работает. Да, последний твой код выдает нужное количество строк.

Сделай правильно вариант с возрастом, сравним с Sql-выдачей. Просто я уже запутался в этих GroupJoin и прочее. Если объединения, я предпочитаю сахар, а не method chaining
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873991
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУЯ правильно понимаю, что ты утверждаешь, что будет одинаковый результат с одинаковым количеством строк?да, я не прав
Код: c#
1.
2.
// full outer join
var q3 = q1.Union(q2);

- это таки-да, не кросс
Планомерно соглашаешься, что ты упертый идиот? Забавно.

Shocker.Proкак я уже сказал - это union select.
Неужели? Ты просто кладезь знаний, когда говоришь, что union - это union

Shocker.ProНо, как я уже сказал, кросс меня не интересует, спор начался про full - ты упорно пытаешь увести в сторону
Ну хорошо, с кроссом ты обосрался. А что с full не так?

Shocker.ProМСУты начал спрашивать о кол-ве записей, в первоначальном варианте было 2x2, я же тебе смоделировал 2x3браво, это бага, а не фича оказывается.
Почему фича? В первом случае я тебе привел матрицу 2x2, потом 2x3. Чтобы тебе объяснить, что ты лажанулся с подсчетом кол-ва строк.

Shocker.ProЗабудь про кросс, я не прав. Вернись к фулл.
Ок. Что по фуллу?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873993
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79МСУ, нет смысла спорить. Я взял ровно тот код, который ты давал вначале. Он не работает. Да, последний твой код выдает нужное количество строк.
Отлично, ты взял тот код, добавил своих Васей и начал сравнивать с SQL. Я тебе дал другой код, построенный по аналогии.

Arm79Сделай правильно вариант с возрастом, сравним с Sql-выдачей. Просто я уже запутался в этих GroupJoin и прочее. Если объединения, я предпочитаю сахар, а не method chaining
Ну я же сделал. Последний код, заточенный под Васи. Сравнивай.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873995
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПланомерно соглашаешьсяпризнаю что я не прав, там, где я не прав. У тебя на это кишка тонка.

МСУОк. Что по фуллу?Что по фуллу? МСУ так и не родил код, который вернет три записи для моего первоначального ТЗ. Вместо этого упорно изображает из себя старого пня и переспрашивает по десять раз одно и то же
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873996
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУПланомерно соглашаешьсяпризнаю что я не прав, там, где я не прав. У тебя на это кишка тонка.
А сколько было шума, истерики, поучений в SQL. А на деле оказался обычным студентом-параноиком. Согласен?

Shocker.ProМСУОк. Что по фуллу?Что по фуллу? МСУ так и не родил код, который вернет три записи для моего первоначального ТЗ. Вместо этого упорно изображает из себя старого пня и переспрашивает по десять раз одно и то же
Точно так же, как не родил код по кросс джойну? Короче, вот рецепт http://codearticles.ru/articles/925 Сиди, кури его. Если не осилишь, тогда можешь пойти в гувернантки.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38873997
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА сколько было шума, истерики, поучений в SQL. А на деле оказался обычным студентом-параноиком. Согласен?нет. У тебя все еще детсадовские знания на предмет объединений, но к моим поучениям добавить нечего, ты их не осилил.

МСУТочно так же, как не родил код по кросс джойну?я и не просил этот код, ты сам решил его написать, потому что full ниасилил.

МСУКороче, вот рецепткороче, рецепт в помойку. Он не вернет правильный результат для моего первоначального примера.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874002
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы как дети малые тут срётесь. Умейте сдерживаться и останавливаться 1ым. Вам, что по 10 лет обоим?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874003
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМСУА сколько было шума, истерики, поучений в SQL. А на деле оказался обычным студентом-параноиком. Согласен?нет. У тебя все еще детсадовские знания на предмет объединений, но к моим поучениям добавить нечего, ты их не осилил.
А ты забавен. Обосрался и еще ярлыки другим вешает. Ты даже тестовый SQL код через жопу написал, с какими-то drop table. Твои "знания" просто распирают наружу, ага.

Shocker.ProМСУТочно так же, как не родил код по кросс джойну?я и не просил этот код, ты сам решил его написать, потому что full ниасилил.
Full - в рецептах для идиотов вроде тебя и тут. Купи мозг и поймешь суть.

Shocker.ProМСУКороче, вот рецепткороче, рецепт в помойку. Он не вернет правильный результат для моего первоначального примера.
Проще всего сказать на помойку, облажавшись и так ничерта не поняв принцип работы. Почему он вернет не правильный результат? Он выражается в кол-ве строк, о которых ты писал. Или что?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874363
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesвы как дети малые тут срётесь. Умейте сдерживаться и останавливаться 1ым. Вам, что по 10 лет обоим?++

Тем более, что full outer join на практике вообще не встречается у обычных людей.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874373
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttбольше всего обижает тот факт, что в LINQ не предусмотрен outer/full join, приходится юзать свои расширения.
Больше всего обижает тот факт, что ты LINQ до сих пор так и не осилил.

http://codearticles.ru/articles/925

Чё ты несешь? Покажи, где эти ключевые слова left/right/outer? Ну или что-то похожее. Про говноэкстеншены уже говорилось, но ты просто не увидел — как обычно
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874374
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КRoman Mejtesвы как дети малые тут срётесь. Умейте сдерживаться и останавливаться 1ым. Вам, что по 10 лет обоим?++

Тем более, что full outer join на практике вообще не встречается у обычных людей.

Зато встречается outer join и очень часто.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874375
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТем более, что full outer join на практике вообще не встречается у обычных людей.

Хотя и full тоже часто встречается. Самый распространённый кейс: синхронизация изменений в коллекциях.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874376
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей Кпропущено...
++

Тем более, что full outer join на практике вообще не встречается у обычных людей.

Зато встречается outer join и очень часто.Часто встречается left join . Но, благодаря ассоцианиям, вручную его писать приходится редко.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874379
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КТем более, что full outer join на практике вообще не встречается у обычных людей.

Хотя и full тоже часто встречается. Самый распространённый кейс: синхронизация изменений в коллекциях.Непонятно в каких коллекциях. Речь идёт о БД и SQL.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874638
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУпропущено...

Больше всего обижает тот факт, что ты LINQ до сих пор так и не осилил.

http://codearticles.ru/articles/925

Чё ты несешь? Покажи, где эти ключевые слова left/right/outer? Ну или что-то похожее. Про говноэкстеншены уже говорилось, но ты просто не увидел — как обычно
Открой файл Extensions.cs, блондинка.

hVosttАлексей Кпропущено...
++

Тем более, что full outer join на практике вообще не встречается у обычных людей.

Зато встречается left outer join и очень часто.
Поправил, а то ты через жопу как всегда пишешь. И делается left outer join тупо он одним запросом. Зачем что-то еще? Учи LINQ.

hVosttАлексей КТем более, что full outer join на практике вообще не встречается у обычных людей.

Хотя и full тоже часто встречается. Самый распространённый кейс: синхронизация изменений в коллекциях.
Не вспомню ни одного примера, где был нужен фулл. Вот кросс джойн периодически нужен.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874730
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОткрой файл Extensions.cs, блондинка.

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

МСУПоправил, а то ты через жопу как всегда пишешь. И делается left outer join тупо он одним запросом. Зачем что-то еще? Учи LINQ.

Чё ты опять несёшь? В SQL есть LEFT JOIN. Где аналог в LINQ? То, что можно сделать — ясно. Так можно и глаз через анальный проход вылечить. Ты покажи left join в LINQ, харе выпендриваться.

МСУНе вспомню ни одного примера, где был нужен фулл. Вот кросс джойн периодически нужен.

Примеров масса.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874736
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНепонятно в каких коллекциях. Речь идёт о БД и SQL.

Отправил на клиента:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{
   "Name": "Имя объекта",
   "Owners": [ 1, 2 ],
   "AvailableOwners": [
      { "Id": 1, "Name": "Вася" },
      { "Id": 2, "Name": "Петя" },
      { "Id": 3, "Name": "Кузя" },
      { "Id": 4, "Name": "Дуся" },
   ]
}



Получил от клиента:

Код: javascript
1.
2.
3.
4.
{
    "Name": "Новое имя объекта",
    "Owners": [ 2, 3 ]
}



т.е. изменили состав владельцев.

Вот здесь может пригодиться full outer join: получить общий список владельцев (Owners) -- в левой части актуальные, в правой изменённые, пройтись по этому списку и добавить, либо удалить.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874737
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВ SQL есть LEFT JOIN. Где аналог в LINQ?
Дык вот же: https://msdn.microsoft.com/en-us/library/bb397895.aspx
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874744
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вот: http://habrahabr.ru/sandbox/39626/ вариант с джойнами интересно сделан
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874748
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79hVosttВ SQL есть LEFT JOIN. Где аналог в LINQ?
Дык вот же: https://msdn.microsoft.com/en-us/library/bb397895.aspx

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



Это не аналог left join, это способ его выполнить.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38874749
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Или вот: http://habrahabr.ru/sandbox/39626/ вариант с джойнами интересно сделан

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

Отправил на клиента:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{
   "Name": "Имя объекта",
   "Owners": [ 1, 2 ],
   "AvailableOwners": [
      { "Id": 1, "Name": "Вася" },
      { "Id": 2, "Name": "Петя" },
      { "Id": 3, "Name": "Кузя" },
      { "Id": 4, "Name": "Дуся" },
   ]
}



Получил от клиента:

Код: javascript
1.
2.
3.
4.
{
    "Name": "Новое имя объекта",
    "Owners": [ 2, 3 ]
}



т.е. изменили состав владельцев.

Вот здесь может пригодиться full outer join: получить общий список владельцев (Owners) -- в левой части актуальные, в правой изменённые, пройтись по этому списку и добавить, либо удалить.Это LINQ-2-Object. Я имел ввиду LINQ-2-SQL.
...
Рейтинг: 0 / 0
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
LINQ: кто какой синтаксис использует?
    #38875094
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

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

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

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

hVosttМСУНу протестируй экстеншены. В чем проблема? Я не понимаю проблемы, которую ты высосал из пальца. Или ты предлагаешь минимум писать код и максимум его грузить откуда-то из нугета от пионеров, которые уже протестировали свои поделки? Я правильно понял?
Нет, пилять, копипастить куски непонятного кода ХЗ откуда
Ну так лучше копипастить очевидное с правильных ресурсов, чем цеплять на каждый чих какие-то левые гавносборки от прыщавых пионеров с нугета. Так?

hVosttМСУДа, это не аналог left join, это и есть left join. Абсолютно верно. Так в чем твои страхи-то? Написать строчку кода - это проблема?
это не есть left join, это синтаксически совершенно разные конструкции, хотя результат один и тот же. с точки зрения получения результата вопросов нет, покрайней мере left можно получить сравнительно малой кровью . но вот full outer без кастомных громоздких экстеншенов нечитабелен чуть менее, чем полностью, так что не ипай нам тут мозг своей хернёй
Ну так если задача решается "малой кровью", зачем нужно что-то еще?

hVosttМСУМеня-то не заклинило, я решаю проблемы по мере их поступления, а не несу очередную околопоносицу про какие-то жуткие страшилки о том, что нужно весь код сливать из нугета, потому что он уже протестирован.
Потому что тестирование это для тебя нечто неведомое, давай не мажся, просто ты не умеешь пользоваться тестами (_не умеешь их готовить_). Но это не мои проблемы, а твои
А что такого неведомого в этом тестировании, что нельзя познать простому смертному вроде меня? Или ты познал джао-да и не желаешься этим делиться? По-моему, даже любой студент отшельник в силах написать тесты. А вот осилить LINQ ты так и не можешь.

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

эээммм...

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

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

}



тибе как маленькому надо обиснять?

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

Просто у тебя не выработана привычка тестировать код. Чего ты мажешься? Видно, что пишешь по принципу «на авось».

МСУНу так если задача решается "малой кровью", зачем нужно что-то еще?

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

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

Чё там осиливать?

МСУТут только добавить и удалить. А где изменить? :) Дада, сейчас пойдут отмазы и вой...

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

hVosttВидно, что пишешь по принципу «на авось».
Не говори, особенно когда начинаешь выборки по нуллам из кросс джойна разгребать.

МСУНу так если задача решается "малой кровью", зачем нужно что-то еще?

hVosttОтносительно малой кровью пишется только простой left join, он читается хуже, но для опытного LINQ-щика всё-таки читается, однако это не касается full outer.
Так я вообще за то, чтобы full outer join выбросить на помойку. Не нужен он в прикладной логике. Как сделать внятную модель с CRUD коллекциями, я написал выше. В данной задаче full outer join притянут ща уши и, более того, беспощадно вреден.

hVosttЕсли бы подобные синтаксические конструкции сразу ввели бы в LINQ, мы бы сейчас об этом не спорили. Вопрос только в том, что помешало этому.
Ну так давай все костыли мира воткнём в LINQ. И будет счастье. Так?

hVosttЧё там осиливать?
Ну хотя бы то, что по твоему утверждению "лямбда в LINQ компилируется в... Expression". Попал?

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

Потому что ты этого не делаешь. Сужу по кладезю твои «рецептов». Кроме ты заявляешь «чего там тестировать»... Короче не мажся.


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

И?

МСУТак я вообще за то, чтобы full outer join выбросить на помойку. Не нужен он в прикладной логике. Как сделать внятную модель с CRUD коллекциями, я написал выше. В данной задаче full outer join притянут ща уши и, более того, беспощадно вреден.

Какие-то сплошные необоснованные нелепые утверждения.

МСУНу так давай все костыли мира воткнём в LINQ. И будет счастье. Так?

Какие ещё костыли? Давай может уберём костыль join?
Вот ты бредишь...

МСУНу хотя бы то, что по твоему утверждению "лямбда в LINQ компилируется в... Expression". Попал?

автор Лямбда-выражение — это анонимная функция, которую можно использовать для создания таких типов как делегаты или деревья выражений. С помощью лямбда-выражений можно написать локальные функции, которые затем можно передавать в другие функции в качестве аргументов или возвращать из них в качестве значения. Лямбда-выражения особенно полезны для составления выражений запросов LINQ.

МСУДесятый раз повторить про кейс, когда нужно не только добавить и удалить, но и еще и изменить? :)

Изменяй, какие проблемы. Если слева (оригиальная коллекция) null — добавляешь, если справа (изменённая коллекция) null — удаляешь, если оба не null — обновляешь. Простецкий алгоритм. В чём проблемы? Если мы изменяем только состав Id, то изменение это и есть удаление/добавление, всё.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38875932
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПотому что ты этого не делаешь. Сужу по кладезю твои «рецептов». Кроме ты заявляешь «чего там тестировать»... Короче не мажся.
Твоя логика даже быка в ступор поставит. Тесты есть, но только в определенных местах модели. Тестировать 2 LINQ запроса у меня нет времени. Писать тесты ради тестов - удел маразматиков.

hVosttМСУНе говори, особенно когда начинаешь выборки по нуллам из кросс джойна разгребать.
И?
Что и, плохо это и неправильно.

hVosttМСУТак я вообще за то, чтобы full outer join выбросить на помойку. Не нужен он в прикладной логике. Как сделать внятную модель с CRUD коллекциями, я написал выше. В данной задаче full outer join притянут ща уши и, более того, беспощадно вреден.
Какие-то сплошные необоснованные нелепые утверждения.
Я же обосновал.

hVosttМСУНу так давай все костыли мира воткнём в LINQ. И будет счастье. Так?
Какие ещё костыли?
Твои костыли, типа full outer join.

hVosttДавай может уберём костыль join?
Его сделали в коробке. Поэтому непонятно, как ты его уберешь. Да и как его убирать, без него не сделать ни left join, ни cross join, ни full join. Где профит?

hVosttМСУНу хотя бы то, что по твоему утверждению "лямбда в LINQ компилируется в... Expression". Попал?

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

hVosttМСУДесятый раз повторить про кейс, когда нужно не только добавить и удалить, но и еще и изменить? :)
Изменяй, какие проблемы. Если слева (оригиальная коллекция) null — добавляешь, если справа (изменённая коллекция) null — удаляешь, если оба не null — обновляешь. Простецкий алгоритм. В чём проблемы? Если мы изменяем только состав Id, то изменение это и есть удаление/добавление, всё.
Какие-то околопоносные грабли и местячковые договоренности. Почему не сделать внятную модель и отдавать IEnumerable<ModifiedObject<T>> с любыми типам операций?

Код: c#
1.
2.
3.
4.
5.
6.
7.
public class ModifiedObject<T>
{
    public IEnumerable<T> Items { get; set; }
    public ModifiedOpertaion Opertaion { get; set; }
}

public enum ModifiedOpertaion { Create, Update, Delete }
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38875963
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТвоя логика даже быка в ступор поставит. Тесты есть, но только в определенных местах модели. Тестировать 2 LINQ запроса у меня нет времени. Писать тесты ради тестов - удел маразматиков.

Чё ты несешь, в очередной раз спрашиваю? Тесты никогда не пишутся ради тестов. Есть определённая реализация, к ней пишется тест, проверяющий и доказывающий правильную работу. Если тестами покрыта только часть реализации, значит это хреновое покрытие, и толку от него мало. Что это ещё за глупый бред про «определённые места модели»?

МСУЯ же обосновал.

Где? В своих фантазиях?

МСУТвои костыли, типа full outer join.

full outer join это конкретная операция над множеством, практически всеми СУБД она поддерживается из коробки. LINQ это язык запросов, который на сегодняшний момент очень многого лишён.

«Костыли» — это твои безумные необоснованные бредни.

МСУЗачем ты занимаешься тупым копипастом из справки? Ты же ляпнул, что лямбда в LINQ компилируется в expression, забыл, что ли?

«Лямбда-выражение — это анонимная функция, которую можно использовать для создания таких типов как делегаты или деревья выражений

Ты читать умеешь?

МСУКакие-то околопоносные грабли и местячковые договоренности. Почему не сделать внятную модель и отдавать IEnumerable<ModifiedObject<T>> с любыми типам операций?

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

*определение класса

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

hVosttМСУЯ же обосновал.
Где? В своих фантазиях?
Ты читаешь через задний проход, я это уже понял. Фантазии выражены тут 17240720

hVosttМСУТвои костыли, типа full outer join.
full outer join это конкретная операция над множеством, практически всеми СУБД она поддерживается из коробки. LINQ это язык запросов, который на сегодняшний момент очень многого лишён.

«Костыли» — это твои безумные необоснованные бредни.
LINQ - это не СУБД. Что поддерживается в СУБД мало кого интересует. Костыли - это твои упоротые "оттестированные" решения.

hVostt«Лямбда-выражение — это анонимная функция, которую можно использовать для создания таких типов как делегаты или деревья выражений

Ты читать умеешь?
И что ты этим хочешь сказать? Что лямбда в LINQ компилируется в expression? Ответь да или нет, не дергайся как нервозный червяк Ответь прямо на мой вопрос.


hVosttМСУКакие-то околопоносные грабли и местячковые договоренности. Почему не сделать внятную модель и отдавать IEnumerable<ModifiedObject<T>> с любыми типам операций?
Речь идёт о реализации, а не о проектировании моделей. Тебя ещё и шизофренией подкосило? Я дал алгоритм конкретного решения, ты выкатил интерфейс класса, который ничего не делает. Жопу с пальцем сравниваешь. Ты не заболел случаем?
Ну так реализация у тебя - откровенный тухляк. Теперь я понимаю, почему ты много тестируешь код. Потому что он дурно пахнет
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38876472
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДа мне фиолетово, кто и как делает тесты. Одни их фанатично пишут даже больше, чем рабочего кода. Другие - меньше. Третьи вообще не пишут. У четвертых есть хорошие тестировщики. Пятые - неандертальцы вроде тебя. Определенные места модели - это определенные методы и классы модели. Неполное покрытие.

Что за неуместные разглагольствования? Растёкся тут жижей по кафелю, понимаешь. Есть билд-сервер, он подтягивает изменения из репы, прогоняет тесты и только если все 100% тесты отработали делает деплой или собирает билд. Это строго формализованный процесс. Нет никаких «определённых мест», кроме твоего больного воображения.

По «определённым местам» можно только проверить как ты убрался в квартире: провёл пальцем по полке шкафа — есть пыль? Значит нехрена ты не убирался! Нет пыли — какой же ты молодчина!

Так что не впаривай свой детский сад с «определёнными местами».

МСУТы читаешь через задний проход, я это уже понял. Фантазии выражены тут 17240720

Извини, но это чушь. Если бы всё обосновывалось и доказывалось таким образом, ты бы сейчас не кодил, а на дереве сидел и гадил под себя поедая бананы. «Нулловые грабли» какие-то придумал.

МСУLINQ - это не СУБД. Что поддерживается в СУБД мало кого интересует. Костыли - это твои упоротые "оттестированные" решения.

Так утверждаешь, как будто я где-то говорил, что LINQ это СУБД. Я говорил про операции над множествами. Это не обязательно должна быть база данных и трансляция в SQL.

Операция полное внешнее соединение (full outer join) по сути является объединением полного левого соединения и полного правого соединения.

Если бы ты пошевелил мозгами, а не повилял задницей, то просто бы сказал почему в LINQ нет операторов left join, right join, full outer join. Имеется совершенно логичная причина (не надо даже лазить по MSDN и искать какие-то пруфы), почему в итоге приходиться обходиться говяным кривым решением используя DefaultIfEmpty -- потому что вот это как раз и есть костыль.

МСУИ что ты этим хочешь сказать? Что лямбда в LINQ компилируется в expression? Ответь да или нет, не дергайся как нервозный червяк Ответь прямо на мой вопрос.

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

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

Я привёл пример реализации. Ты пока знатно попукал. Предложи другое решение.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878098
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЧто за неуместные разглагольствования? Растёкся тут жижей по кафелю, понимаешь. Есть билд-сервер, он подтягивает изменения из репы, прогоняет тесты и только если все 100% тесты отработали делает деплой или собирает билд. Это строго формализованный процесс. Нет никаких «определённых мест», кроме твоего больного воображения.
А бывает нету билд сервера, он не подтягивает изменения из репы и не прогоняет тесты. Почему? Потому что не только билдом можно выполнить задачи - например как ты сделаешь ретракт и деплой wsp пакета из студии? Да и нужна ли автоматизация тут, вопрос. Собирать билды в песочнице для многих не нужно. Есть система контроля версий, есть user stories и tasks в TFS, есть контрольные точки. Всегда можно сделать билд по ним. Никаких проблем.

hVosttПо «определённым местам» можно только проверить как ты убрался в квартире: провёл пальцем по полке шкафа — есть пыль? Значит нехрена ты не убирался! Нет пыли — какой же ты молодчина!

Так что не впаривай свой детский сад с «определёнными местами».
100% убраться в квартире - похоже на гувернантку. Чисто твой подход, понимаю. До разработки ты еще не дорос
Определенные места - это не 100% покрытие. Тебя это пугает?

hVosttМСУТы читаешь через задний проход, я это уже понял. Фантазии выражены тут 17240720

Извини, но это чушь. Если бы всё обосновывалось и доказывалось таким образом, ты бы сейчас не кодил, а на дереве сидел и гадил под себя поедая бананы. «Нулловые грабли» какие-то придумал.
Почему чушь? Ты забиваешь гвозди в выборку, отделяя мух от котлет через какие-то чудо нуллы. Архитектура канализационного уровня чё.

hVosttМСУLINQ - это не СУБД. Что поддерживается в СУБД мало кого интересует. Костыли - это твои упоротые "оттестированные" решения.

Так утверждаешь, как будто я где-то говорил, что LINQ это СУБД. Я говорил про операции над множествами. Это не обязательно должна быть база данных и трансляция в SQL.

Операция полное внешнее соединение (full outer join) по сути является объединением полного левого соединения и полного правого соединения.

Если бы ты пошевелил мозгами, а не повилял задницей, то просто бы сказал почему в LINQ нет операторов left join, right join, full outer join. Имеется совершенно логичная причина (не надо даже лазить по MSDN и искать какие-то пруфы), почему в итоге приходиться обходиться говяным кривым решением используя DefaultIfEmpty -- потому что вот это как раз и есть костыль.
Я вообще не понимаю, почему ты LINQ постоянно пытаешься стыковать с функционалом СУБД. Мол в SQL есть же такие функции, почему их нет в LINQ. Ну ведь бред же. Почему DefaultIfEmpty - это кривое решение?

hVosttМСУИ что ты этим хочешь сказать? Что лямбда в LINQ компилируется в expression? Ответь да или нет, не дергайся как нервозный червяк Ответь прямо на мой вопрос.
Я хочу сказать, что лямбды используются для создания дерева выражений. Слово «компилируется» тебя смутило, да? Стоит не так выразиться, так ты мёртвого разбудишь, и с кокашками съешь
Ну хоть сейчас ты начал аккуратно следить за своим пустопорожним языком, осторожничаешь?

hVosttМСУНу так реализация у тебя - откровенный тухляк. Теперь я понимаю, почему ты много тестируешь код. Потому что он дурно пахнет
Я привёл пример реализации. Ты пока знатно попукал. Предложи другое решение.
Ты привёл какашку. А теперь, обосравшись, с умным выражением лица пытаешься удержаться в канализационных стоках на плаву. Решение уже было 100500 раз предложено. Перечитай топик.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878267
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА бывает нету билд сервера, он не подтягивает изменения из репы и не прогоняет тесты. Почему? Потому что не только билдом можно выполнить задачи - например как ты сделаешь ретракт и деплой wsp пакета из студии? Да и нужна ли автоматизация тут, вопрос. Собирать билды в песочнице для многих не нужно. Есть система контроля версий, есть user stories и tasks в TFS, есть контрольные точки. Всегда можно сделать билд по ним. Никаких проблем.

Да, в лабораторных работах студентов не нужны никакие билды. А студия прекрасно работает с тестами. Сделал изменения, прогнал тесты — значит всё ок.

МСУПочему чушь? Ты забиваешь гвозди в выборку, отделяя мух от котлет через какие-то чудо нуллы. Архитектура канализационного уровня чё.

Какие претензии к нуллам не пойму? И при чём архитектура? Какая ещё нафиг архитектура, о ней вообще речь не шла.

МСУЯ вообще не понимаю, почему ты LINQ постоянно пытаешься стыковать с функционалом СУБД. Мол в SQL есть же такие функции, почему их нет в LINQ. Ну ведь бред же. Почему DefaultIfEmpty - это кривое решение?

Это костыль, потому что полное левое соединение невозможно выполнить на типах значений , и здесь тебе даже DefaultIfEmpty мало чем поможет, если только значение по умолчанию тебя устроит в качестве отсутствия значения. Если бы результатом выполнения LINQ была бы не типизированная коллекция (Object), то DefaultIfEmpty был бы не нужен, и можно было бы ввести left/right/full join. Стыковать LINQ с функционалом СУБД -- вполне логичная задача, с которой очень многие и очень часто сталкиваются. Будешь отрицать? Или будешь чесать про какую-то меташизику?

МСУНу хоть сейчас ты начал аккуратно следить за своим пустопорожним языком, осторожничаешь?

Слопал значит? Ну ок

МСУТы привёл какашку. А теперь, обосравшись, с умным выражением лица пытаешься удержаться в канализационных стоках на плаву. Решение уже было 100500 раз предложено. Перечитай топик.

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

hVosttКакие претензии к нуллам не пойму? И при чём архитектура? Какая ещё нафиг архитектура, о ней вообще речь не шла.
Модель должна прозрачно отражать своё предназначение, а не засирать мозг нуллами и прочей магической отрибутикой.

hVosttЭто костыль, потому что полное левое соединение невозможно выполнить на типах значений , и здесь тебе даже DefaultIfEmpty мало чем поможет, если только значение по умолчанию тебя устроит в качестве отсутствия значения. Если бы результатом выполнения LINQ была бы не типизированная коллекция (Object), то DefaultIfEmpty был бы не нужен, и можно было бы ввести left/right/full join. Стыковать LINQ с функционалом СУБД -- вполне логичная задача, с которой очень многие и очень часто сталкиваются. Будешь отрицать? Или будешь чесать про какую-то меташизику?
Так левое соединение можно даже через GroupJoin выразить, чего ты докопался до DefaultIfEmpty? Стыковать LINQ не нужно, он не СУБД.

hVosttМСУНу хоть сейчас ты начал аккуратно следить за своим пустопорожним языком, осторожничаешь?
Слопал значит? Ну ок
Слопал что? Твой позапрошлогодний высер про "компиляцию" в expression?

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

С учётом того, что ты там про «особенные места» несёшь, ты походу дальше ларька с арбузами и не продвинулся. Иди лабы помогай студентам писать, и мозги не клюй.

МСУМодель должна прозрачно отражать своё предназначение, а не засирать мозг нуллами и прочей магической отрибутикой.

Шта? Прозрачно отражать? Ахахаххаахх... .аааа... уморил 0)))
Ты чё там употребляешь? Нормально говорить можешь?

МСУТак левое соединение можно даже через GroupJoin выразить, чего ты докопался до DefaultIfEmpty? Стыковать LINQ не нужно, он не СУБД.

Да что ты? Ну-ка покеж полное левое соединение на GroupJoin без DefaultIfEmpty. А то смотрю ты уже чешешь что-то попало не разбирая дороги

Я говорил про множества, а LINQ это язык запросов. СУБД это не язык запросов, так что капитан очевидность крепко тебе жмёт руку — ты знатно из себя идиота строишь )) Почти поверил.

МСУУсловие задачи не меняется, меняется форма представления результата. Программист вправе выбирать эту форму сам. Я выбрал обычный типизированный подход, который 100% отражает предметику. Ты выбрал способ молодого неофита с неспособностью мыслить. С таким же успехом ты мог всё закодировать в base64, а потом парсить. Типичный подход обезумевших обезьянок.

Ну и нах мне решение задачи, которую ты сам же себе выдумал? Я вообще-то предоставил конкретные данные, которые уходят на клиента, и данные, которые в ответ приходят. Ты же начинаешь сношать мозг: модели понимаешь не те, архитектура понимаешь не та, подход понимаешь не тот. Это наверное у тебя руки-крюки, раз такая простецкая задачка вызывает поток неосознанной фантазии

Решение я дал вполне конкретное, оно работает, и претензий ни у кого к такому решению никогда не было. Оно прекрасно тестируется, никакого оверхеда (с какими-то галимыми костыльными типами операции, бред вообще), оно универсально, и оно отлично работает. Каких-то очевидных проблем с этим решением я не вижу, а ты их не указал. Понимаешь твоё «способ неофита» — это НИ О ЧЁМ. Это квакание обезьянки. В цирке можешь людей посмешить. Или всё-таки можешь обосновать? Давай.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878370
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСлопал что? Твой позапрошлогодний высер про "компиляцию" в expression?

...
— Молодой человек, уступи ветерану место, я в 45-ом ногу потерял.
— Чё ты гонишь, старик!? Ехал я в 45-ом, не было там твоей ноги!
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878388
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУДа, если ларёк по продаже арбузов решил блеснуть умением настраивать серверные билды, то почет ему и уважение.
С учётом того, что ты там про «особенные места» несёшь, ты походу дальше ларька с арбузами и не продвинулся. Иди лабы помогай студентам писать, и мозги не клюй.
Чем тебя испугали обособленные места? Или ты тестируешь всегда 100%, тестер ты наш сизокрылый?

hVosttМСУМодель должна прозрачно отражать своё предназначение, а не засирать мозг нуллами и прочей магической отрибутикой.
Шта? Прозрачно отражать? Ахахаххаахх... .аааа... уморил 0)))
Ты чё там употребляешь? Нормально говорить можешь?
Какой-то невнятный высер. Сформулируй еще раз мысль.

hVosttМСУТак левое соединение можно даже через GroupJoin выразить, чего ты докопался до DefaultIfEmpty? Стыковать LINQ не нужно, он не СУБД.
Да что ты? Ну-ка покеж полное левое соединение на GroupJoin без DefaultIfEmpty. А то смотрю ты уже чешешь что-то попало не разбирая дороги
Что такое "полное" левое соединение? Решил на нобелевский лауреат пойти?

Вот тебе обычный left outer join, выраженный через GroupJoin без DefaultIfEmpty.

Код: c#
1.
var q = x.GroupJoin(y, a => a.Id, b => b.Id, (value, t) => new { value1 = value, value2 = t.FirstOrDefault() });



hVosttЯ говорил про множества, а LINQ это язык запросов. СУБД это не язык запросов, так что капитан очевидность крепко тебе жмёт руку — ты знатно из себя идиота строишь )) Почти поверил.
Тебе рано еще про множества, маленький. Пока LINQ не осилишь, тебя к множествам даже на пушечный выстрел нельзя подпускать

hVosttНу и нах мне решение задачи, которую ты сам же себе выдумал? Я вообще-то предоставил конкретные данные, которые уходят на клиента, и данные, которые в ответ приходят. Ты же начинаешь сношать мозг: модели понимаешь не те, архитектура понимаешь не та, подход понимаешь не тот. Это наверное у тебя руки-крюки, раз такая простецкая задачка вызывает поток неосознанной фантазии
Еще раз подчеркиваю, я выдумал не задачу, а конкретное решение. Обычно, это работа программистов, если ты не в курсе. Хотя у кого я спрашиваю, иди тестируй лучше

hVosttМСУСлопал что? Твой позапрошлогодний высер про "компиляцию" в expression?

...
— Молодой человек, уступи ветерану место, я в 45-ом ногу потерял.
— Чё ты гонишь, старик!? Ехал я в 45-ом, не было там твоей ноги!


Папа накричал на маму. Мама накричала на сына. Сын накричал на кошку. Кошка насрала всем в тапочки. Мораль: бесправный - не значит безопасный!
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878401
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЧем тебя испугали обособленные места? Или ты тестируешь всегда 100%, тестер ты наш сизокрылый?

Да, конечно. Какой тогда смысл в тестировании? Особенно это важно в командной разработке. В своих наколенных поделках конечно можно и не тестировать.

МСУВот тебе обычный left outer join, выраженный через GroupJoin без DefaultIfEmpty.

Код: c#
1.
var q = x.GroupJoin(y, a => a.Id, b => b.Id, (value, t) => new { value1 = value, value2 = t.FirstOrDefault() });



Это тоже самое, что и DefaultIfEmpty, я то думал...

МСУЕще раз подчеркиваю, я выдумал не задачу, а конкретное решение. Обычно, это работа программистов, если ты не в курсе. Хотя у кого я спрашиваю, иди тестируй лучше

Ты придуриваешься? Там нет в задаче твоих половых признаков. Долго будешь тупить?

Работа программиста — решать поставленную задачу, а не строить из себя идиота, а ты уже в который раз с упёртостью достойной всяческих похвал делаешь морду дурачком.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878402
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttс упёртостью достойной всяческих похвал"лучшего применения"
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878409
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТебе рано еще про множества, маленький. Пока LINQ не осилишь, тебя к множествам даже на пушечный выстрел нельзя подпускать

Ты уж извини, но кому кому, а LINQ тебе надо ещё учить и учить. Ты только что выше лажанул, потому что твоё решение с GroupJoin не является левым соединением, как ты обещал. Всё потому, что ты тупо оказывается даже не знаешь что такое множества и как с ними работать. Так что иди учи матчасть. Левое соединение он с GroupJoin делает... Посмешил
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878427
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУЧем тебя испугали обособленные места? Или ты тестируешь всегда 100%, тестер ты наш сизокрылый?
Да, конечно. Какой тогда смысл в тестировании? Особенно это важно в командной разработке. В своих наколенных поделках конечно можно и не тестировать.
Везде есть своя золотая середина, главное без фанатизма. Это к вопросу "тестирования" пары строк кода на LINQ.

hVosttМСУВот тебе обычный left outer join, выраженный через GroupJoin без DefaultIfEmpty.

Код: c#
1.
var q = x.GroupJoin(y, a => a.Id, b => b.Id, (value, t) => new { value1 = value, value2 = t.FirstOrDefault() });



Это тоже самое, что и DefaultIfEmpty, я то думал...
Это не тоже самое, что DefaultIfEmpty. Во-вторых, можно выразить и через GroupJoin + SelectMany, вот там нужно использовать DefaultIfEmpty. Как видишь, варианты есть. Учи LINQ, маленький.

hVosttМСУЕще раз подчеркиваю, я выдумал не задачу, а конкретное решение. Обычно, это работа программистов, если ты не в курсе. Хотя у кого я спрашиваю, иди тестируй лучше
Ты придуриваешься? Там нет в задаче твоих половых признаков. Долго будешь тупить?
При придуряешься? Десятый раз повторяю, не в моей задаче, а моей реализации. Не путай теплое с мягким. Задача одна, решений много. Твоё решение - пустопорожнее гавно.

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

hVosttМСУТебе рано еще про множества, маленький. Пока LINQ не осилишь, тебя к множествам даже на пушечный выстрел нельзя подпускать

Ты уж извини, но кому кому, а LINQ тебе надо ещё учить и учить. Ты только что выше лажанул, потому что твоё решение с GroupJoin не является левым соединением, как ты обещал. Всё потому, что ты тупо оказывается даже не знаешь что такое множества и как с ними работать. Так что иди учи матчасть. Левое соединение он с GroupJoin делает... Посмешил
Ну ты даже с GroupJoin обделался, назвав его тем же самым, что и DefaultIfEmpty. Такое может ляпнуть только пришибленный ушлепок
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38878429
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хвостик, так ты не ответил. Что такое "полное" левое соединение?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879043
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВезде есть своя золотая середина, главное без фанатизма. Это к вопросу "тестирования" пары строк кода на LINQ.

Какая разница столько там строк?


МСУТак вот ты решаешь задачу через задний проход. Неужели непонятно?

Представь себе, не понятно. Почему ты так решил? У тебя похоже большие проблемы с объяснением своих же слов, поэтому ты моментально опускаешь до уровня проходов и личностных оценок.

МСУНу ты даже с GroupJoin обделался, назвав его тем же самым, что и DefaultIfEmpty. Такое может ляпнуть только пришибленный ушлепок

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

Когда ответить по существу нечего, МСУ начинает придираться к словам. Что же такое, оу ты сказал «полное»? Такого в книжках нетю, ааахахахахах...
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879103
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему вы, ребята, называете "LINQ query expressions" сахаром?
Выходит будто fluent expressions не являются сахаром над query expressions, ведь fluent как раз и есть сахар над query же, бо query появился раньше fluent и fluent это суть тот же query написанный в функциональном стиле!

ЗЫ. Я смотрю дело Севы и МСУ живёт
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879116
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticА почему вы, ребята, называете "LINQ query expressions" сахаром?Потому fluent находится почти полностью в рамках классического синтаксиса С#/VB, а query expressions имеют sql-синтаксис, вкоряченный в С#/VB.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879127
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПотому fluent находится почти полностью в рамках классического синтаксиса С#/VB, а query expressions имеют sql-синтаксис, вкоряченный в С#/VB.Ну мне казалось, что query синтаксис появился раньше fluent, поэтому логично предположить, что fluent является надстройкой над query, и, согласно определению "синтаксический сахар", данному педивикией, где сахаром называется то, что является дополнением/надстройкой над чем-нибудь, сахаром является как раз fluent.

ЗЫ. Ты в курсе, что у тебя аватарка с косичками? Так и должно быть?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879137
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyfluent находится почти полностью в рамках классического синтаксисаиз любопытства - в чем заключается то малое "не почти"?
enigmaticЗЫ. Ты в курсе, что у тебя аватарка с косичками? Так и должно быть?
ИМХО - ушанка. Балалайка, водка и медведь немножко за кадром
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879153
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИМХО - ушанка. Балалайка, водка и медведь немножко за кадром А, ну ладно тогда, а то я давно не заходил и начал опасаться за завсегдатаев
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879164
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proиз любопытства - в чем заключается то малое "не почти"?Насчет сидиеза не знаю, а в вб вот это, например:
Код: vbnet
1.
oList = db.tblBanner.Where(Function(v) v.ID = ID).ToList

Или может это лишь я такими конструкциями не пользовался за рамками LINQ.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879167
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticShocker.ProИМХО - ушанка. Балалайка, водка и медведь немножко за кадром А, ну ладно тогда, а то я давно не заходил и начал опасаться за завсегдатаев
Блин, а ведь была мысль насчет медведя за плечом Но он туда не влезет.

Добавлю хоть погоны, как время найду.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879169
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticНу мне казалось, что query синтаксис появился раньше fluent, поэтому логично предположить, что fluent является надстройкой над query
Когда кажется - креститься надо. 17217136 - и обращаем внимание на вызов
Код: c#
1.
2.
[System.Core]System.Linq.Enumerable::Select<int32,int32> (class [mscorlib]System.Collections.Generic.IEnumerable`1<!!0>,
                                                         class [mscorlib]System.Func`2<!!0,!!1>)


который как бы и есть вызов того самого "флюентного" метода. Которые все живут в System.Linq.Enumerable .
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879176
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyНасчет сидиеза не знаю, а в вб вот это, например:
Код: vbnet
1.
oList = db.tblBanner.Where(Function(v) v.ID = ID).ToList


Ну это передача делегата Func<,> ведь (не знаю, как в VB называются делегаты - ссылки на методы). В принципе, это в некотором смысле другой сахар - создание на ходу анонимного делегата. В шарпе будет выглядеть так:
Код: c#
1.
.Where(v => v.ID == ID)

но это не имеет отношения непосредственно к линку.
AntonariyИли может это лишь я такими конструкциями не пользовался за рамками LINQ.Ну и зря ))
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879177
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНу и зря ))А зачем?)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879183
enigmatic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Всё верно, фигню написал. И fluent, и query одновременно появились в .Net 3.5, а query использует методы fluent'а, т.е. query -- сахар над fluent.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879200
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyShocker.ProНу и зря ))А зачем?)в чем вопрос:
Зачем использовать делегаты в принципе?
или
Зачем использовать inline объявление анонимного делегата (вместо ссылки на явно объявленный метод)?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879203
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyпропущено...
А зачем?)в чем вопрос:
Зачем использовать делегаты в принципе?
или
Зачем использовать inline объявление анонимного делегата (вместо ссылки на явно объявленный метод)?В смысле пример приведи из своей практики. Какая была задача и как ее решил.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879217
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
enigmaticНу мне казалось, что query синтаксис появился раньше fluent,
Так и есть .
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879226
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВ смысле пример приведи из своей практики. Какая была задача и как ее решил.
Вчерашний пример - из класса A создаю экземпляр класса Б, в который нужно отдать некий ID.
Проблема в том, что с одной стороны этот ID классу Б понадобится не сразу (только при рендеринге), с другой стороны, ID еще и не готов, он будет сгенерен или изменен в процессе работы класса А (но заведомо до того, как он понадобится Б, просто по определению)

Тогда я беру и объявляю конструктор Б не Б(int ID), а Б(Action<int> getID)
и создаю экземпляр: new Б(() => this.MyID)
И тогда, когда классу Б приспичит, он сделает var id=getID() и получит актуальный ID

А вообще, в самой платформе .NET миллион методов и классов, принимающих на вход Func<> или Action<> - каждый из них - ответ на твой вопрос ))
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879240
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда я беру и объявляю конструктор Б не Б(int ID), а Б(Action<int> getID)
и создаю экземпляр: new Б(() => this.MyID)
И тогда, когда классу Б приспичит, он сделает var id=getID() и получит актуальный IDПочему не Б(A obj); new Б(this); var id = obj.MyID?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879244
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТогда я беру и объявляю конструктор Б не Б(int ID), а Б(Action<int> getID)
и создаю экземпляр: new Б(() => this.MyID)
И тогда, когда классу Б приспичит, он сделает var id=getID() и получит актуальный IDПочему не Б(A obj); new Б(this); var id = obj.MyID?
Насколько я понял, речь идет об отложенном считывании Id
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879253
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Antonariyпропущено...
Почему не Б(A obj); new Б(this); var id = obj.MyID?
Насколько я понял, речь идет об отложенном считывании Idтак тут тоже отложенное. в класс б передается ссылка на а, и б дергает его, когда хочет.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879256
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТогда я беру и объявляю конструктор Б не Б(int ID), а Б(Action<int> getID)
и создаю экземпляр: new Б(() => this.MyID)
И тогда, когда классу Б приспичит, он сделает var id=getID() и получит актуальный IDПочему не Б(A obj); new Б(this); var id = obj.MyID?Ужасное решение, увеличивающее связность кода. Зачем вводить зависимость класса Б от класса А или от какого-го либо интерфейса? Тем более, что класс Б - библиотечный.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879260
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэтому вопрос "нафига тут нужны делегаты" остается.

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

Shocker.ProЗачем вводить зависимость класса Б от класса А или от какого-го либо интерфейса? А почему нет? Условия задачи сформулированы так, что строго исключают зависимость Б от А?

Shocker.ProТем более, что класс Б - библиотечный.Не убедительно. Библиотека библиотеке рознь.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879276
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyи красоты для?
да
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879279
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy Зачем вводить зависимость класса Б от класса А или от какого-го либо интерфейса?А действительно. А уже зависит от Б, путь заодно реализует интерфейс из Б, а передается в конструктор как Object.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879284
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПогоня за излишней развязанностью всегда во благо и красоты для?уменьшение связности улучшает обслуживаемость, модифицируемость, тестируемость кода. По поводу "излишней" - по моему опыту - связанность должна быть всегда несколько меньше, чем требует объективный взгляд на проблему сегодня, ибо потом это резко создает ненужные проблемы при любой попытке развития проекта.

AntonariyУсловия задачи сформулированы так, что строго исключают зависимость Б от А?В данном случае - да. Ибо класс библиотечный. Даже если это было бы не так в данной задаче - все равно нужно обойтись без создания зависимости класса Б от класса А, потому что завтра класс Б захочется куда-то унести или воспользоваться им в другом месте. ТЕМ БОЛЕЕ, что написание в данном случае несвязного кода не усложняет код и не прибавляет букв.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879285
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА действительно. А уже зависит от Б, путь заодно реализует интерфейс из Б, а передается в конструктор как Object.нахера? Уже есть универсальный "интерфейс" Action<int>, нафига тут лишнюю сущность вводить?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879289
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyА действительно. А уже зависит от Б, путь заодно реализует интерфейс из Б, а передается в конструктор как Object.нахера? Уже есть универсальный "интерфейс" Action<int>, нафига тут лишнюю сущность вводить?А если требуется больше одного метода?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879294
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyПогоня за излишней развязанностью всегда во благо и красоты для?уменьшение связности улучшает обслуживаемость, модифицируемость, тестируемость кода. По поводу "излишней" - по моему опыту - связанность должна быть всегда несколько меньше, чем требует объективный взгляд на проблему сегодня, ибо потом это резко создает ненужные проблемы при любой попытке развития проекта.

AntonariyУсловия задачи сформулированы так, что строго исключают зависимость Б от А?В данном случае - да. Ибо класс библиотечный. Даже если это было бы не так в данной задаче - все равно нужно обойтись без создания зависимости класса Б от класса А, потому что завтра класс Б захочется куда-то унести или воспользоваться им в другом месте. ТЕМ БОЛЕЕ, что написание в данном случае несвязного кода не усложняет код и не прибавляет букв.Опять сферические рассуждения.

Какая задача конкретно потребовала именно такого решения?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879300
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА если требуется больше одного метода?а в чем проблема? будет несколько параметров. Впрочем, возможно тут потребуется поменять подход, надо смотреть конкретную задачу.

AntonariyОпять сферические рассуждения.
Какая задача конкретно потребовала именно такого решения?Это рассуждения, основанные как на теории, так и на опыте. А опыт показывает - чем автономнее классы, тем масштабируемее система.

А задача конкретно была изложена. Добавляем условие - класс Б - библиотечный.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879306
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro А задача конкретно была изложена. Добавляем условие - класс Б - библиотечный.Вот это конкретно: 17222947 , и это конкретно: 17252250 , а ты написал сферическую фигню про а и бе сидели на трубе.

Shocker.Pro Впрочем, возможно тут потребуется поменять подход, надо смотреть конкретную задачу.Об этом я и говорю.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879323
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyShocker.ProА задача конкретно была изложена. Добавляем условие - класс Б - библиотечный.Вот это конкретно: 17222947 , и это конкретно: 17252250 , а ты написал сферическую фигню про а и бе сидели на трубе.Ты под МСУ-то не коси

Хочешь задачу в терминах моего проекта? Да тут на лист убористого текста - бессмысленно.

Уменьшение зависимостей, увеличение автономности класса - это благо, а не зло (не говорим про "любой ценой", говорим про "адекватными усилиями", а моем случае - нулевыми усилиями). Если ты тут не согласен, я спорить не буду, это просто биться головой об стену.

Хочешь еще пример - Linq тебе плохой пример? Забудем даже об отложенном выполнении и о деревьях выражений. Если бы не было Linq, имея в арсенале методы расширения, обобщенные типы и делегаты - многие из его методов стоило бы написать самому для себя - это невероятно удобная вещь.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879349
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProУменьшение зависимостей, увеличение автономности класса - это благо, а не зло (не говорим про "любой ценой", говорим про "адекватными усилиями", а моем случае - нулевыми усилиями). Если ты тут не согласен, я спорить не буду, это просто биться головой об стену.Не надо, мне знакомы детали этой религии :)

Shocker.ProХочешь еще пример - Linq тебе плохой пример?Нормальный пример, но ни ты не являешься разработчиком Linq'а, ни я. Я осознаю, какие задачи решают делегаты в линке, моим задачам они перпендикулярны, поэтому я ищу другие задачи, похожие на мои, с целью детектирования мест, имеющих профит от решения с использованием делегатов. Поэтому сферические А и Б не канают.

Попробую по-другому, без углубления в дебри терминологии твоего проекта: что в общем и целом у тебя делает максимально отвязная библиотека?
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879376
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПопробую по-другому, без углубления в дебри терминологии твоего проекта: что в общем и целом у тебя делает максимально отвязная библиотека?привносит некоторые элементы вебформс в MVC

я тоже знаком с этим методом - щас ты начнешь копать вглубь, и если не подвергнешь жестокой критике само существование класса Б, то как минимум предложишь другой вариант решения, имеющий право на существование. Поэтому я очень не хочу углубляться в детали. Класс Б - вспомогательный, основная его работа идет при рендеринге частичного представления. Библиотека находится в отдельной сборке и, разумеется, не имеет зависимости от пользовательского проекта. Класс А - некий объект пользовательского проекта, который будет потом отрендерен. На момент создания класса А, данные в него из БД еще не загружены, поэтому я не могу их отдать в класс Б. Экземпляр Б я создаю в конструкторе класса А.
Я могу создать класс Б позже, перед рендером (это один из вариантов обхода проблемы), но мне УДОБНЕЕ создать все нужные объекты в конструкторе и забыть про него. Тем более, что это не стоит мне никаких усилий (перегруженный конструктор класса Б может принять как int, так и Action<int>)
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879433
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro я тоже знаком с этим методом - щас ты начнешь копать вглубь, и если не подвергнешь жестокой критике само существование класса Б, то как минимум предложишь другой вариант решения, имеющий право на существование.2 раза нет :)
Зря ты меня с мусей сравниваешь.

Я хочу собрать набор случаев, когда использование делегатов в архитектуре приложений имеет объективно и формально обоснованное предпочтение перед другими методами. Пока что есть два примера - linq и твоя библиотека. linq формально обоснован, его случай пронумерован и зопейсан в книжечку, такие задачи в обозримом будущем передо мной не стоят.

Рендеринг веб-контента мне более близок, но твои обоснования решения с делегатами субъективны:Shocker.Pro но мне УДОБНЕЕ создать все нужные объекты в конструкторе и забыть про него. Тем более, что это не стоит мне никаких усилийЛичное удобство, а не требования задачи, как в том же linq.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879465
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЛичное удобство, а не требования задачи, как в том же linq.уже заранее заготовил аргумент, что использование Linq для обработки массива можно тоже объявить личным удобством, а не требованием задачи, ведь есть же foreach. А ты и сам справился. Ок, я понял, ты, видимо, используешь foreach.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38879483
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyЛичное удобство, а не требования задачи, как в том же linq.уже заранее заготовил аргумент, что использование Linq для обработки массива можно тоже объявить личным удобствомага, только вопрос был не про линк, а про делегаты.

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

Код: c#
1.
int x = 123;



hVosttМСУТак вот ты решаешь задачу через задний проход. Неужели непонятно?
Представь себе, не понятно. Почему ты так решил? У тебя похоже большие проблемы с объяснением своих же слов, поэтому ты моментально опускаешь до уровня проходов и личностных оценок.
Не у меня проблемы с объяснением, у тебя проблемы с пониманием. Не переваливай со своей больной головы на мою здоровую.

hVosttМСУНу ты даже с GroupJoin обделался, назвав его тем же самым, что и DefaultIfEmpty. Такое может ляпнуть только пришибленный ушлепок
Для частного случая это тоже самое. Для общего случая твоё решение с GroupJoin не является аналогом left join, и результат их работы может отличаться. Но тебе-то что, ты можешь жопу назвать аналогом пальца, тебе не впервой
Что есть частный случай?

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

Код: c#
1.
int x = 123;



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

МСУНе у меня проблемы с объяснением, у тебя проблемы с пониманием. Не переваливай со своей больной головы на мою здоровую.

Пониманием чего? Ты заявляешь «вот ты решаешь задачу через задний проход» — я тебя спрашиваю «почему?». А ты в ответ говоришь у меня проблемы с пониманием. Мозги давай включай. Если ты что-то там вякаешь, изволь отвечать за свои слова, или просто давай примем за аксиому, что ты балаболка обыкновенная. Какие проблемы-то?

МСУЧто есть частный случай?

Частный случай это такие два множества, для которых твоё решение с GroupJoin работает аналогично решению с join + DefaultIfEmpty, т.е. как внешнее левое соединение. Но это не верно для любых двух множеств. Твоё решение с GroupJoin не является решением соединения outer left join для всех случаев. Если бы ты включал мозг хоть иногда, то понял бы этого и не нёс бы чушь.

МСУТвою глупостью и несостоятельность видно за версту. Но я тебя не виню. Просто не нужно лезть туда, где опыта ноль. Только и всего.

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

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

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

С такой риторикой можешь пойти и повозбуждать бомжей возле своего подъезда, мне такой уровень дискуссии неинтересен, ты откровенно тупишь.

МСУТипизация притом здесь, что не нужно ковыряться в коллекции и делить её по null условию на 2 коллекции. Есть экземпляр класса, который содержит коллекцию для такой-то операции, коллекцию для другой операции, для третьей операции. Тебе нужно добавить элементы, обращаешься к экземпляру по требуемой операции и получаешь свою конкретную коллекцию. Это и есть типизация, дуралейка.

Не гони, это всё просто строки кода. Какая ещё нах типизация? Упал чтоле?

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

Мозги включи, если они ещё способны у тебя включаться. Почитай чем отличается группировка от соединения в принципе для начала. А то чешешь тут про знания LINQ, а сам даже азов тупо не знаешь.

МСУПосмотрел. Что там делает голова хвоста?

Фу. Опять этот твой подплинтусный уровень дискуссии. Признаю, на этом уровне ты Бог и не мне с тобой тягаться в словесности.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38880244
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модераторы в этом разделе походу отдыхают
Модератор: Почистил. Если дурнопахнущие аллегории не прекратятся - прикрою
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38880246
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesмодераторы в этом разделе походу отдыхают

Нельзя мешать искать поиску истины в здоровом споре
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38880247
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще даже март не наступил, а обострение - уже!
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38880251
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesмодераторы в этом разделе походу отдыхают
а что не так? не нравится - иди в ЗПТ
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38880271
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRoman Mejtesмодераторы в этом разделе походу отдыхают
а что не так? не нравится - иди в ЗПТ
срам уже на 10 страниц, который имеет какое то отдаленное отношение к топику.
...
Рейтинг: 0 / 0
LINQ: кто какой синтаксис использует?
    #38880275
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesИзопропилпропущено...

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

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

С такой риторикой можешь пойти и повозбуждать бомжей возле своего подъезда, мне такой уровень дискуссии неинтересен, ты откровенно тупишь.
Дело не в переобувке, а в том, что у тебя с понимание туговато. Аналогично твоему высеру про полное левое соединение Или компиляцию лямбд в expression

hVosttМСУТипизация притом здесь, что не нужно ковыряться в коллекции и делить её по null условию на 2 коллекции. Есть экземпляр класса, который содержит коллекцию для такой-то операции, коллекцию для другой операции, для третьей операции. Тебе нужно добавить элементы, обращаешься к экземпляру по требуемой операции и получаешь свою конкретную коллекцию. Это и есть типизация, дуралейка.

Не гони, это всё просто строки кода. Какая ещё нах типизация? Упал чтоле?
Причем тут строки кода? Я тебе говорю о том, что нужно называть вещи своими именами, а не фильтровать нуллы. Я ж говорю, закодируй в base64 и радуйся. Аналогичная грабля.

hVosttМСУНе совсем понимаю, о каких частных случаях идет речь. Приведи пример, а то твои искрометные сопли про левые полные соединения больше нет желания ковырять.
Мозги включи, если они ещё способны у тебя включаться. Почитай чем отличается группировка от соединения в принципе для начала. А то чешешь тут про знания LINQ, а сам даже азов тупо не знаешь.
Ты понимаешь разницу между "эквивалентом результата" и "возможностью выразить результат"? Я выше именно писал про выражение результата через функционал N. Купи уже голову.

hVosttМСУПосмотрел. Что там делает голова хвоста?
Фу. Опять этот твой подплинтусный уровень дискуссии. Признаю, на этом уровне ты Бог и не мне с тобой тягаться в словесности.
Так сам же и начал калоедничать. А теперь фукаешь.
...
Рейтинг: 0 / 0
222 сообщений из 222, показаны все 9 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ: кто какой синтаксис использует?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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