Linq to Entities で「Contains()」機能を実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-31 12:02:02
オリジナル
433 人が閲覧しました

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

Linq to Entities を使用して 'Contains()' を実装するための回避策

'Contains()' メソッドは、Linq to Entities では本質的にサポートされていません。エンティティ。クエリ内で 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート