преобразовать SQL в LINQ или улучшить мой запрос, пожалуйста - PullRequest
3 голосов
/ 04 апреля 2019

Я пытаюсь преобразовать sql в лямбду или LINQ, но пока не могу упростить,

Мне удалось сделать это двумя разными лямбдами, но я хочу, чтобы это был один запрос.

SQL-запросэто:

  SELECT PamID, MAX (MaxAmount)
    FROM RebateTable
GROUP BY PamID

пока это работает, но есть ли лучший способ.

var t = from r in RebateList
    group r by r.PamID;
var x = from y in t
    select new RebateMaxClass
    {
        PamId = y.Key,
        TotalSale = y.Max(s => s.MaxAmount)
    };

Ответы [ 2 ]

4 голосов
/ 04 апреля 2019

Вы можете использовать эту форму:

RebateTable.GroupBy(r=>r.PamId).Select(s=>new RebateMaxClass
    {
        PamId = s.Key,
        TotalSale = s.Max(y => y.MaxAmount)
    };
2 голосов
/ 04 апреля 2019

Запрос выглядит хорошо.Вы можете сформировать один запрос, подобный этому:

var t = from r in RebateList
        group r by r.PamId into y
        select new
        {
            PamId = y.Key,
            TotalSale = y.Max(s => s.MaxAmount)
        };

Но это не быстрее.Запрос расширен и будет выполняться до тех пор, пока не должен.

Альтернативой является формирование "нового стиля LinQ":

var t2 = RebateList.GroupBy(g => g.PamId) // Do a Grouping
var t3 = t2.Select(s => new { PamId = s.Key, TotalSale = s.Max(m => m.MaxAmount) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...