我在LINQ表達式中遇到Func委託問題。這是該方法的問題的一部分(repository.Items是IQueryable<T>)
:LINQ表達式中的Func參數
public static ActionResult XXX<T>(IRepository<T> repository,
Func<T, int> keyExtractor, int id = 0)
{
if (id == 0) return ...
T item = repository.Items.Where(x => keyExtractor(x) == id).
FirstOrDefault();
if (item == null) return ...
try {
repository.DeleteItem(item);
return ...
} catch (Exception e) {
return ...
}
}
但是,當我運行的方法,我得到錯誤,如在LINQ實體不支持節點的類型我也試過版本predikate但我沒有運氣可言
任何想法如何解決它
我找出一個可行的方法LINQ執行延遲執行,所以我必須首先執行這樣執行:?
T item = repository.Items.AsEnumerable().Where(x => keyExtractor(x) == id)
這將是很好看到整個錯誤文本以及整個方法 –
噢,我想通了,LINQ表達式必須先用AsEnumerable()方法或類似的東西來執行: – MilanG
然後,你應該發佈這個答案並將其標記爲這樣。其他人在尋找相同的東西時 –