[英]Get the last record of group using LINQ
我有一个清单:
var list = new List<Foo>() {
new Foo() { FooId = 1, GroupId = 1, ValueA = 3},
new Foo() { FooId = 2,GroupId = 1, ValueA = 40},
new Foo() { FooId = 3,GroupId = 2, ValueA = 80},
new Foo() { FooId = 4, GroupId = 2, ValueA = 20},
};
我只想获取最新记录,因此结果如下:
| GroupId | ValueA |
|---------|--------|
| 1 | 40 |
| 2 | 20 |
根据您的需要,您可以更改OrderBy
,甚至可以在其中使用First
或Last
。
list
.OrderByDescending(a => a.ValueA)
.GroupBy(a => a.GroupId)
.Select(g => g.Last());
var result =
( from p in List
group p by p.Value into g
select new {
GroupId = g.OrderByDescending(x=>x.Id).FirstOrDefault().GroupId,
ValueA = g.OrderByDescending(x => x.Id).FirstOrDefault().ValueA
}
).ToList();
这个对我有用...
因此,您可以尝试。
这是你想做的吗?
var result1 = from p in list
group p by p.GroupId into g
select new { GroupId = g.Key, MaxFooId = g.FooId.Max() };
var result2 = from p in result1
join list q on p.MaxFooId equals q.FooId
select new { GroupId = p.GroupId, ValueA = q.ValueA }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.