我有这张表的基金数据值,我想选择每个基金(FundId)的最新值。 这个查询虽然在执行时给了我一些问题。 “不支持指定的方法”。LINQ查询,通过分组选择最新值 - 不支持的方法
var q = from f in ctx.FundDatas
group f by f.FundId into g
let latestDataItem = g.OrderByDescending(r => r.DateOfValue).FirstOrDefault()
select new {
g.Key, LatestDataItem = latestDataItem
};
var list = q.ToList(); //Executed and exception is thrown
为什么不按这个顺序工作?我不只想拿到钥匙和DateOfValue,如果是这样我会只跳过了“让”的一部分,并作出选择是这样的:
select new {
g.Key,
LatestDateOfValue = g.Max(y=>y.DateOfValue)
};
上述作品...但我想每个基金数据项最新的全部对象,而不仅仅是最大日期。
这里的内部异常堆栈跟踪:
[NotSupportedException: Specified method is not supported.]
MySql.Data.Entity.SqlGenerator.Visit(DbApplyExpression expression) +28
System.Data.Common.CommandTrees.DbApplyExpression.Accept(DbExpressionVisitor`1 visitor) +25
MySql.Data.Entity.SqlGenerator.VisitInputExpression(DbExpression e, String name, TypeUsage type) +35
MySql.Data.Entity.SelectGenerator.VisitInputExpressionEnsureSelect(DbExpression e, String name, TypeUsage type) +21
MySql.Data.Entity.SelectGenerator.Visit(DbProjectExpression expression) +38
System.Data.Common.CommandTrees.DbProjectExpression.Accept(DbExpressionVisitor`1 visitor) +25
MySql.Data.Entity.SelectGenerator.GenerateSQL(DbCommandTree tree) +60
MySql.Data.MySqlClient.MySqlProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree) +376
System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree) +125
System.Data.EntityClient.EntityCommandDefinition..ctor(DbProviderFactory storeProviderFactory, DbCommandTree commandTree) +442
与.NET连接器6.5.4.0我运行MySQL。
编辑: 表定义:
FundId int(6), PK
DateOfValue date, PK
Value double(12,6)
“我有这张表有基金数据值” - 哪张表?你是否想要包含表格定义? – Sepster 2013-03-25 07:31:59
在那里,添加了表格定义。这是一个非常简单的表,其中FundId和DateOfValue作为关键字,然后将实际值作为double。 – Andreas 2013-03-25 07:40:09
对不起 - 并不是暗示它是需要的,只是看起来好像你打算包含它。 – Sepster 2013-03-25 08:00:58