1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Помогите пожалуйста с C#

Тема в разделе "Программирование", создана пользователем 3aвулoн, 29.11.14.

  1. 3aвулoн

    3aвулoн Активный участник

    12.986
    1.340
    у меня есть некая выборка всех заказов из DataSet (порезал не из соображений секретности а просто текст огромен и жутковат)

    var query =
    from...
    join...
    join...
    join...
    where...
    orderby...
    select new
    {
    YearZakaz = ... // год заказа
    MonthZakaz = ... // месяц заказа
    ZakazID = ... // уникальный номер заказа
    TovarovVZakaze = ... // количество товаров в заказе
    SumZakaza = ... // сумма заказа
    };

    Затем я группирую количество проданных товаров и сумму заказов по месяцам и годам:

    var queryPG = query.GroupBy(cm =>
    new { cm.YearZakaz, cm.MonthZakaz },
    (key, group) => new { Year = key.cYearZakaz,
    Month = key.cMonthZakaz,
    Tovarov = group.Sum(cm => cm.TovarovVZakaze),
    Summa = group.Sum(cm => cm.SumZakaza)
    }).OrderBy(cm => cm.Year).ThenBy(cm => cm.Month);

    Все сказочно работает. Но как мне в эту группировку добавить подсчет количеств заказов (по ZakazID)по месяцам? весь мосг себе сломал :( может устал просто, конец недели...

    Спасибо за подсказки! :shuffle:
     
  2. qwertEHOK

    qwertEHOK Активный участник

    3.094
    57
    а при чем тут c#?
    если у вас проблема с sql, то так и пишите
    покажите пример таблицы и что хотите получить на выходе
     
  3. X-FI

    X-FI Активный участник

    3.948
    3
    qwertEHOK, не позорьтесь. Это же LINQ. Как буду за ПК - посмотрю.
     
  4. 1777

    1777 Активный участник

    7.076
    198
    var queryPG = query.GroupBy(cm =>
    new { cm.YearZakaz, cm.MonthZakaz },
    (key, group) => new { Year = key.cYearZakaz,
    Month = key.cMonthZakaz,
    Tovarov = group.Sum(cm => cm.TovarovVZakaze),
    Summa = group.Sum(cm => cm.SumZakaza),
    Count = group.Count()
    }).OrderBy(cm => cm.Year).ThenBy(cm => cm.Month);
     
  5. 3aвулoн

    3aвулoн Активный участник

    12.986
    1.340
    я дятел ((( я не правильно задал вопрос. прошу у всех прощения :(

    разумеется одна строка в query это не один заказ. это было бы слишком просто.
    одна строка - соответствует одному виду товара, т.е. одному заказу как правило соответствует несколько строк, во вложении - реальный скриншот c отладчика.

    соответственно это должно быть как то Count = group.Distinct(ZakazID).Count() - но как это поженить с моей группировкой = печаль (((

    еще раз прошу прощения за некорректно заданный вопрос.
     

    Вложения:

    • smm.png
      smm.png
      Размер файла:
      31,2 КБ
      Просмотров:
      648
  6. 1777

    1777 Активный участник

    7.076
    198
    3aвулoн,
    тогда у вас и в Tovarov = group.Sum(cm => cm.TovarovVZakaze) множатся данные при суммировании, это точно так надо? можно попробовать добавить еще группировку по ZakazId

    а вообще напишите человеческим языком - какая стоит задача? и структуры таблиц с примерами данных
     
  7. qwertEHOK

    qwertEHOK Активный участник

    3.094
    57
    не позорюсь
    увидел нечто скулеподобное и решил помочь

    как вы на этим пишите? это же нечто
     
  8. 1777

    1777 Активный участник

    7.076
    198
    qwertEHOK, как раз таки когда решить задачу, мысля множествами, проще - то линк помогает, ну и данные в памяти компа