我已经建立了一个自定义聚合
CREATE AGGREGATE Helpers.Median(@input REAL)
RETURNS REAL EXTERNAL NAME Aggregates.Median
用 edmx 写的:
<Function Name="Median" Aggregate="true" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="Helpers" ReturnType="float">
<Parameter Name="input" Type="Collection(float)" Mode="In" />
</Function>
创建了这个类:
public class MySqlFunctions
{
[DbFunction("Entities.Store", "Median")]
public static float Median(IEnumerable<float> arg)
{
throw new NotSupportedException("Direct calls are not supported.");
}
}
执行
using (Entities context = new Entities ())
{
var q = context.DataTable
.GroupBy(x => x.ID
, y => y.Value
, (k, g) => new { k,
c=MySqlFunctions.Median(g) }
).ToList();
}
并得到这个错误:
System.NotSupportedException: 'em_PriceTrackerModel.Store.MySqlFunctions' 类型上的指定方法 'Single Median(System.Collections.Generic.IEnumerable`1[System.Single])' 无法转换为 LINQ to Entities 存储表达式,因为它的返回类型与其 DbFunction 属性指定的函数的返回类型不匹配。
我做错了什么?