我正在使用由实体框架数据源支持的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%。
谁能给我一个正确方向的指针?
干杯,
尝试在中定义的SquareRoot函数SqlFunctions
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();