2
我試圖使用Entity Framework CTP5過濾來自數據庫的結果。這是我目前的方法。IQueryable <>使用GetValue進行動態排序/過濾失敗
IQueryable<Form> Forms = DataContext.CreateFormContext().Forms;
foreach(string header in Headers) {
Forms = Forms.Where(f => f.GetType()
.GetProperty(header)
.GetValue(f, null)
.ToString()
.IndexOf(filter,
StringComparison.InvariantCultureIgnoreCase) >= 0);
}
但是,我發現GetValue不能使用實體框架。它在IEnumerable<>
而不是IEnumerable<>
而不是IQueryable<>
是否有替代方案可以用來產生相同的效果?
IEnumerable和IQueryable之間的區別在於Linq for Objects(IEnumerable)將委託作爲參數並直接執行代碼,因此編譯的任何內容都是可能的。 EF使用IQueryable,它的表達式解析器對它能夠識別和解析的內容有限制。 – 2011-01-08 07:23:03