powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ: кто какой синтаксис использует?
25 сообщений из 222, страница 1 из 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
25 сообщений из 222, страница 1 из 9
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ: кто какой синтаксис использует?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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