Linq Lambda group by get max

时间:2012-09-13 20:32:19

标签: c# linq

我想获得Id为9的最大样本数

    var samplecount = dbContext.ChemDetails
                      .GroupBy(a => a.Id == 9)
                      .Select(a => a.Max(w => w.Sample_Num))
                      .FirstOrDefault();

我从上面得到的是最大值,而不是Id == 9。

1 个答案:

答案 0 :(得分:3)

你只需要一个Where子句,然后取最大值:

var maxNumber = dbContext.Where(a => a.Id == 9).Max(a => a.Sample_Num);

如果您想获得每个Id的最大值,那就是您使用GroupBy时的最大值。

Dictionary<int,int> MaxLookup = dbContext.ChemDetails
    .GroupBy(a => a.Id)
    .ToDictionary(g => g.Key, g => g.Max(item => item.Sample_Num));
int maxForId9 = 0;
if (MaxLookup.ContainsKey(9)) maxForId9 = MaxLookup[9];