使用Linq to Entities 實作「Contains()」的解決方法
Linq to 本身並不支援「Contains()」方法,這在查詢中處理ID 集合時帶來了挑戰。在這裡,我們提出了一個可行的解決方案來解決這個限制。
解決方案:
要替換不受支援的「Contains()」方法,我們利用「Any()」 ' 方法來取代:
var q = from t in svc.OpenTransaction where txnIds.Any<long>(tt => tt == t.OpenTransactionId) select t;
但是,此修改並不能解決Linq to Entities 上下文中不支援'Any()' 的問題。為了克服這個問題,我們提供了一種替代方法:
public static IQueryable<TEntity> WhereIn<TEntity, TValue> ( this ObjectQuery<TEntity> query, Expression<Func<TEntity, TValue>> selector, IEnumerable<TValue> collection )
此擴充方法可讓您將篩選器套用於一系列實體類型和屬性。
使用範例:
以下程式碼示範如何使用'WhereIn()' 方法:
using (MyObjectContext context = new MyObjectContext()) { //Using method 1 - collection provided as collection var contacts1 = context.Contacts.WhereIn(c => c.Name, GetContactNames()); //Using method 2 - collection provided statically var contacts2 = context.Contacts.WhereIn(c => c.Name, "Contact1", "Contact2", "Contact3", "Contact4" ); }
透過使用此解決方案,您方法:
透過使用此解決方案,您方法:透過使用此解決方案,您方法:透過使用此解決方案,您可以在使用時獲得'Contains()' 的功能Linq to Entities,為您的查詢提供更大的靈活性。以上是如何在 Linq to Entities 中實作「Contains()」功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!