2013-01-31 2 views
1

데이터베이스에 지리적 위치가 포함 된 테이블이 있습니다. 점에 가장 가까운 위치를 찾는 함수를 작성하고 싶습니다. 나는 NHibernate에이 시도 :NHibernate에서 함수 결과로 정렬 하시겠습니까?

public Location GetClosestLocation(double latitude, double longitude) 
{ 
    var closest = Session.QueryOver<Location>() 
     .OrderBy(location => 
      (location.Latitude - latitude) + 
      (location.Longitude - longitude)) 
     .Asc.SingleOrDefault(); 

    return closest; 
} 

그러나 그것은 작동하지 않습니다 - 나는 런타임 오류가 발생합니다.

가장 가까운 위치를 반환하려면 어떻게해야합니까? NHibernate로 간단한 함수의 결과로 주문할 수 있습니까?

답변

3

QueryOver는 이와 같은 표현을 이해할 수 없다고 생각합니다. 람다 식 사용은 속성을 식별하는 것으로 제한됩니다. IProjection을 사용하는 OrderBy() 오버로드가있어 유연성이 향상됩니다. 당신이 노력으로

LINQ를 사용하면 거의 동일한 코드를 사용할 수 있어야합니다 :

var closest = Session.Query<Location>() 
        .OrderBy(location => 
           (location.Latitude - latitude) + 
           (location.Longitude - longitude)) 
        .SingleOrDefault(); 
+1

감사합니다, 나는 이런 식으로 뭔가를 시도했다. 이 질문을하는 다른 사람을위한 메모 - 거리의 절대자를 꼭 기억하십시오! – Oliver

관련 문제