Я пытаюсь конвертировать 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)
};
Вы можете использовать эту форму:
RebateTable.GroupBy(r=>r.PamId).Select(s=>new RebateMaxClass
{
PamId = s.Key,
TotalSale = s.Max(y => y.MaxAmount)
};
Запрос выглядит хорошо. Вы можете сформировать один запрос, как это:
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) });
Вы можете переписать свой собственный запрос, как этот.
var t = from r in RebateList
group r by r.PamID into y
select new RebateMaxClass
{
PamId = y.Key,
TotalSale = y.Max(s => s.MaxAmount)
};
Просто :)
group r by r.PamID into y
вместоgroup r by r.PamID into y
.