Linq 如何使用返回基元值(如整数)的 max 函数执行子查询
本文关键字:max 函数 查询 执行 返回 何使用 Linq 整数 | 更新日期: 2023-09-27 18:34:20
我有以下查询。
List<MyItem> myList
= randomEntity
.GroupBy(x => new {
x.Id,
x.randomInnerEntity.Name,
x.randomInnerEntity.Number
})
.Select(z => new MyItem
{
Id = z.Key.Id,
Name = z.Key.Name,
Totals = z.Count(),
LatestObj = randomEntity.Where(x => x.Id == z.Key.Id)
.GroupBy(x => x.Id)
.Select(gr => new {
item1 = gr.Key,
item2 = gr.Max(x => x.SomeInteger.Value)
})
})
.OrderBy(z => z.Name)
.ToList();
如您所见,内部子查询提供了 LatestObj 工作的动态对象,但它提供了一个匿名对象。 我想知道如何执行相同的查询但返回像整数这样的基元类型。
根据要求
public class MyItem
{
property Guid? Id { get; set; }
property String Name { get; set; }
property Int MaxValueTryingToGet { get; set; } //This is the field I would like to set with the integer max
property Int Totals { get; set; }
property dynamic LatestObj { get; set; }
property randInner randomInnerEntity { get; set; }
}
LatestObj = randomEntity.Where(x => x.Id == z.Key.Id)
.GroupBy(x => x.Id)
.Select(gr => new {
item1 = gr.Key,
item2 = gr.Max(x => x.SomeInteger.Value)
})
由于您只是选择项目 id 与 z.Key.Id
匹配的项目,因此按 id 进行分组似乎没有太多点。
您应该能够直接通过使用获得最大值
LatestObj = randomEntity.Where(x => x.Id == z.Key.Id).Max(x -> x.SomeInteger.Value)