Я пишу формулу в функции и передаю ее в мой запрос EF.Это не работает.Но такие функции, как Math.Pow (x, x) работают.Зачем?Нужно ли мне интегрировать мою формулу непосредственно в мои запросы?
var i = from u in Locations
where (SquareRoot(u.SomeField) < radius)
select u;
public double SquareRoot(double val)
{
return Math.Pow(val, 0.5);
}
Но это работает:
var i = from u in Locations
where (Math.Pow(u.SomeField, 0.5) < radius)
select u;
Фактические формулы, которые я хочу использовать, будут намного больше, чем простой квадрат.Формулы, такие как расстояние между точками на земле и т. Д. Вот почему я хотел бы выделить мои формулы из запроса и использовать их в качестве функций.
Фактическая формула выглядит следующим образом:
public double DistanceBetweenPoints(double centerLat, double centerLon, double pointLat, double pointLon)
{
const double sphericalValue = 69.1;
return Math.Sqrt((Math.Pow(sphericalValue*(pointLat-centerLat), 2)) + (Math.Pow(sphericalValue*(pointLon-centerLon)*Math.Cos(centerLat/57.3), 2)));
}
Math.Sqrt () и Math.Cos не поддерживаются EF.