一尘不染

Linq to EF-不支持的功能

sql

我正在使用由实体框架数据源支持的Linq进行查询。

我收到以下错误:

LINQ to Entities无法识别方法’Double Sqrt(Double)’,该方法不能转换为商店表达式。

这是我的函数的简化版本(我的版本更复杂,并且使用ACos,sin,cos和其他C#Math类函数)。

  var objects =
            from n in context.Products.Where(p => p.r == r)
            let a = Math.Sqrt((double)n.Latitude)
            where a < 5
            orderby a
            select n;

        return objects.Take(100).ToList();

我认为问题可能与Linq to EF(和SQL数据源)与Linq to SQL相比受支持的功能集有限的情况有关。我对此还比较陌生,所以我不确定100%。

谁能给我一个正确方向的指针?

干杯,


阅读 146

收藏
2021-03-17

共1个答案

一尘不染

尝试在中定义的SquareRoot函数SqlFunctions

    var objects =
        from n in context.Products.Where(p => p.r == r)
        let a = SqlFunctions.SquareRoot((double)n.Latitude)
        where a < 5
        orderby a
        select n;

    return objects.Take(100).ToList();
2021-03-17