함수에 전달 된 값이 null 인 경우 불필요한 WHERE 및 JOIN을 생략 할 수 있도록이 코드를 리팩터링 할 수있는 방법이 있습니까? (이 코드는 모든 매개 변수가 전달되면 올바르게 작동합니다)? "SearchItems"및 "ItemDistance"함수는 전체 텍스트 검색 및 거리 계산을 각각 수행하기위한 테이블 수준 함수입니다. 모든 다른 비 - 널 값의 종류만큼 시동기Linq 2 Sql 동적 쿼리
public IQueryable<ItemSearchResult> Search(string keywords, int? category, float? latitude, float? longitude)
{
return from item in _db.Items
join searchItems in _db.SearchItems(keywords)
on item.ItemId equals searchItems.ItemId
join itemDistance in _db.ItemDistance(latitude.Value, longitude.Value)
on item.ItemId equals itemDistance.ItemId
where item.Category == category.Value
select new ItemSearchResult()
{
Item = item,
Distance = itemDistance.Distance
};
}
nullable 매개 변수가있는 질문이 업데이트되었습니다. –