我只是想構建一個動態過濾器。 最後返回如何將IQueryable <T>轉換爲表達式<Func <T, bool>>?
Expression<Func<Event, bool>>
我試圖使用合併(AndAlso)的表達,但它不幹活,最後我發現有這良好的工作IQueryable的查詢,但是現在我如何轉換它的返回類型 -
Expression<Func<Event, bool>>?
我的代碼:
public IQueryable<Event> GetBySearch(EventFilter search)
{
IQueryable<Event> query = this.Context.Events.AsQueryable();
Expression<Func<Event, bool>> expression = null;
if (search.CategoryId != 0)
{
query = query.Where(x => x.CategoryId == search.CategoryId);
}
if (search.SubCategoryId != 0)
{
query = query.Where(x => x.SubCategoryId == search.SubCategoryId);
}
expression = query.Expression as Expression<Func<Event, bool>>; //This convert is not working, it returns null.
return this.Context.Events.Where(expression);
}
看看更新答案(我認爲你已經接受了它,不知道你是否仍然會通知該情況),這需要考慮Florian的評論。 – Sam