实体框架,如何获得Sum<>接受一种方法?

时间:2013-03-12 11:14:59

标签: c# sql entity-framework methods func

我有点卡住,我不确定这是可能的。我正在Entity Framework中编写一个数据库,我想创建一个可以通过dataconext使用的方法。

所以我想写点......

double total = db.FlightEntries().Sum(f => f.GetTotalflightTimes());

所以我知道EF to Sql不会理解“GetTotalflightTimes()

所以我把它弄到了......

public static class MyFlightEntryExtentions
{
    public static Expression< Func<FlightEntry, double>> GetTotalFlightTimes(this FlightEntry flightEntry)
    {
        double value
         ...........
         ..........
        return x => value;
    }
} 

错误4无法转换类型

  

'System.Linq.Expressions.Expression&GT;'   '加倍'

我知道我可能会采取错误的方式,所以有人可以告诉我!

1 个答案:

答案 0 :(得分:0)

有点不清楚你想要实现什么,但如果你想执行一些不仅仅指向数据库中的属性/列的自定义求和逻辑,你需要首先完成查询而不是已经读取的对象你可以执行你总结:

db.FlightEntries().ToArray().Sum(f => f.GetTotalflightTimes());

你的扩展方法必须为此返回double;

另一方面,如果你的目标是有一些逻辑可以在总和下自定义列,你不能拥有一个实体作为参数的方法,你必须只知道你的实体的类型并且可能是一些相关的鉴别器来构建表达式未保存在实体内。