有沒有什麼辦法可以重構這段代碼,以便它可以省略不必要的WHEREs和JOINs,如果傳遞給函數的值爲null(如果所有參數都傳入,此代碼現在工作得很好)? 「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
};
}
更新的問題有可爲空的參數 – 2009-07-11 03:35:51