使用Linq to Entities 的Contains() 函數解決方法
問題:
如何使用Linq to Entities 查詢中的Contains() 函數,儘管缺乏支援?
答案:
更新: 從 Entity Framework 開始( EF) 版本 4 及更高版本,直接支援 Contains()。
對於早期版本的EF,需要解決方法:
Contains() 的自訂擴充方法
建立下列擴充方法:
<code class="csharp">public static IQueryable<TEntity> WhereIn<TEntity, TValue>( this ObjectQuery<TEntity> query, Expression<Func<TEntity, TValue>> selector, IEnumerable<TValue> collection) { // ... (implementation remains the same as in the provided code) }</code>
選用靜態集合版本
您可以選擇建立一個允許靜態集合的版本:輸入:
<code class="csharp">public static IQueryable<TEntity> WhereIn<TEntity, TValue>( this ObjectQuery<TEntity> query, Expression<Func<TEntity, TValue>> selector, params TValue[] collection) { return WhereIn(query, selector, (IEnumerable<TValue>)collection); }</code>
用法:
使用此擴充方法,您可以在Linq to Entities 查詢中使用Contains(),如下所示:
<code class="csharp">public static void Main() { 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"); } }</code>
以上是如何使用 Linq to Entities 中的 Contains() 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!