我有一個Func<ProductItemVendor, bool>
存儲在CompareProductItemVendorIds
。我想在LINQ查詢中使用該表達式。在LINQ查詢中使用Func <>
看來下面是合法的:
var results =
Repository.Query<ProductItemVendor>().Where(CompareProductItemVendorIds);
但是,以下是不合法的:
var results = from v in Repository.Query<ProductItemVendor>()
where CompareProductItemVendorIds(v)
select v;
此代碼產生一個錯誤:
The LINQ expression node type 'Invoke' is not supported in LINQ to Entities.
問題:
爲什麼這些陳述如此不同以至於我的
Func<>
在一個合法而非另一個合法?我認爲他們基本上都做了同樣的事情。我該如何做這項工作?我必須明確創建我的
Func<>
而不是Expression<Func<>>
?
請參閱我的相關問題Using Expression<Func<>> in a LINQ Query。
一個小白的問題:是'CompareProductItemVendorIds '在第一個例子中與第二個'CompareProductItemVendorIds(v)'相同? – Kapol 2014-10-28 20:17:29
@Kapol:是的,那是我的'Func <>'存儲的地方,我在第一段中描述過。 – 2014-10-28 20:18:18
查看[LINQKit](http://www.albahari.com/nutshell/linqkit.aspx)以幫助您編寫表達式的查詢。 – 2014-10-28 20:30:32