わかりました、これが私の問題です。とフィールドを持つデータベーステーブルBloodCenters
があります。Linq Lambda 構文を使用してこれらのテーブルをクエリし、特定のポイントから指定された半径内にある BloodCenters を取得します。latitude
longitude
私はこのコードを使用していますが、それでもエラーが発生します (Where 述語内):
public static List<BloodCenter> GetAllNearby(int latitude, int longitude, int radius, int limit){
List<BloodCenter> res = null;
res = new DBEntities().BloodCenters.Where(b =>
Util.distance(latitude, longitude, b.Latitude, b.Longitude, "K") <= radius).Take(limit);
return res;
}
Util.distance は、緯度と経度の 2 点間の距離を返す関数です。
編集済み
だから、自分の関数をWhere述語の中に入れることはできません。しかし、SQL 構文を使用して距離を計算できますか? これが私のUtil.Distance
実装です:
public static double distance(double lat1, double longi1, double lat2, double longi2, string unit){
var theta = longi1 - longi2;
var dist = Math.Sin(DegreeToRadian(lat1)) * Math.Sin(DegreeToRadian(lat2)) +
Math.Cos(DegreeToRadian(lat1)) * Math.Cos(DegreeToRadian(lat2)) * Math.Cos(DegreeToRadian(theta));
dist = Math.Acos(dist);
dist = RadianToDegree(dist);
var miles = dist * 60 * 1.1515;
unit = unit.ToUpper();
if (unit.Equals("K"))
return miles * 1.609344;
else if (unit.Equals("N"))
return miles * 0.8684;
else
return miles;
}