有没有什么办法可以重构这段代码,以便它可以省略不必要的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