选择已排序组中的最后记录
本文关键字:最后 记录 排序 选择 | 更新日期: 2023-09-27 18:09:28
我有一个linq查询的结果,这是两个SQL表之间的连接
var result1 = db.TABLE1.Join(
db.TABLE2,
p1 => p1.ID,
p2 => p2.ID,
(p1, p2) => new
{
Id = p1.ID,
Date = p2.DATE,
Prop1 = p1.Prop1,
Prop2 = p2.Prop2,
Prop3 = p2.Prop3,
Prop4 = p2.Prop4
});
然后我尝试按Id对结果进行分组并选择每个Id
具有最新日期的行var result2 = result1.GroupBy(p => p.Id)
.Select(q => q.OrderBy(p => p.Date).LastOrDefault())
.ToList();
但是用
就不行有谁能帮我找出我做错了什么吗?LINQ to Entities不识别方法'<>f__AnonymousTypee'6[System. decimal,System. double,System. nullable '1[System. decimal],System. nullable '1[System. decimal],System. string,System. string,System. string。String] LastOrDefault<>f__AnonymousTypee'6'方法,此方法无法转换为存储表达式。"错误。
你不能在LINQ中使用Last
/LastOrDefault
来查询实体,因为没有可用的转换到底层数据源语言(SQL)。相反,按降序对记录进行排序,然后获得第一个或默认值,如:
q.OrderByDescending(p => p.Date).FirstOrDefault()