Как использовать несколько операторов groupby в Entity Framework linq? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть таблица с этими столбцами:

POS
CropName
productionQty

Мне нужно найти POS, содержащий культуры с большим количеством.

Я пробовал

  from r in await _crops.GetAll()
  group r by r.CropName
  into g
  select new
         {
             id = g.Key,
             sum = g.Sum(r => r.productionQty),
             name = g.First().PosName,
             cropname = g.First().CropName,
         };

У меня есть все количество урожая, но мне нужен урожай в соответствии с POS, содержащий большее количество.

   Example:
   PosName productionQty CropName
    POS1     100         Crop1
    POS2      200        crop2
    Pos1     300         crop1
    pos1     200          crop2

Мне нужен следующий результат:

    PosName productionQty CropName
    POS1     400         Crop1
    POS2     200        crop2
    pos1     200          crop2
    

1 Ответ

0 голосов
/ 06 августа 2020

Просто выйдя из «желаемого результата», похоже, что вы, возможно, хотите изменить строку:

group r by r.CropName

To

group r by r.CropName.ToLower() +'\n' + r.PosName.ToLower()

Это означает, что регистр будет проигнорирован и результат где есть две строки, которые имеют pos1 / crop1, будут объединены, но другие строки, которые имеют pos1 / crop2 и pos2 / crop2, будут отдельными

Вы должны иметь в виду, что это может не дать именно тот результат, который вы хотите , потому что то, что вы получите для PosName и CropName, будет зависеть от того, какой элемент окажется первым в списке групп результатов. Эти элементы сгруппированы без учета регистра, поэтому список из pos1, POS1, PoS1 grouped и first () 'd вернет pos1, но список POS1, pos1, PoS1 вернет POS1

...