我有一个linq表达式,它返回组中的事务。每个事务都有一个数值,我现在需要知道返回的所有事务的最高值是多少。该值保存在名为TransactionId
的字段中这是我用来获取分组列表的表达式。
var transactions = ctx.MyTransactions
.Where (x => x.AdapterId == Id)
.GroupBy(x => x.DeviceTypeId);
我现在需要编写一个对“事务”分组列表起作用的表达式,以查找TransactionId字段的“max”。我尝试了不同的想法,但似乎没有一个与分组结果一起使用。我是linq的新手,所以我不知道该怎么做。
答案 0 :(得分:0)
您是否尝试在每个组中找到最大值,然后在所有组中查找最大值?
int max = transactions.Max(g => g.Max(t => t.TransactionId));
或者您可以再次查询数据库:
int max = ctx.MyTransactions
.Where(x => x.AdapterId == Id)
.Max(t => t.TransactionId);
答案 1 :(得分:0)
这将为您提供每组中的最大值
var transactionIds = ctx.MyTransactions
.Where (x => x.AdapterId == Id)
.GroupBy(x => x.DeviceTypeId,
g => new {
DeviceTypeId = g.Key,
MaxTransaction = g.Max(x => x.TransactionId)
});