首頁  >  文章  >  後端開發  >  如何在 Linq to Entities 中實作「Contains()」功能?

如何在 Linq to Entities 中實作「Contains()」功能?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 12:02:02371瀏覽

How to Implement 'Contains()' Functionality in Linq to Entities?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn