好的,這是我的問題。我有數據庫表BloodCenters
,其中有latitude
和longitude
字段。我想通過使用Linq Lambda Syntax通過檢索相對於某點的給定半徑內的BloodCenters來查詢這些表。如何在Lambda .NET中調用用戶定義函數語法
我使用此代碼,但它仍然給我的錯誤(如果謂詞中):
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;
}
緯度和經度'int'的? –
你應該嘗試使用sql server空間數據類型而不是一些託管代碼函數 –