0

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

所以我想写一些类似的东西......

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

所以我知道 EF 到 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>' 到 'double'

我知道我可能会走错路,所以有人可以告诉我!

4

1 回答 1

0

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

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

并且您的扩展方法必须为此返回 double ;

另一方面,如果您的目标是有一些逻辑来自定义总和下的列,那么您不能拥有将实体作为参数的方法,您必须构建表达式,只知道您的实体的类型,也许还有一些未保存的相关鉴别器实体内部。

于 2013-03-12T11:29:54.950 回答