0

列 a = {myvalue} および列 b がコレクション内の任意の値を持つリポジトリにクエリを実行する必要があります。

ここに私が持っているものがあります:

Application[] applicationCollection = GetAllApplications();
var result = repo.GetAll(r => r.Email == myEmail && r.Application.In(applicationCollection));

「中」の書き方がわかりません...

できれば、これを行う方法へのリンクが最善であるため、答えを得るのではなく、それを学ぶことができます:)。皆さんありがとう。

(これは繰り返しの質問だと思いますが、私の Google/検索スキルは明らかに貧弱です。)

4

4 に答える 4

1

の SQL の考え方はitem in collection、C# (LINQ を含む) で として記述されていcollection.Contains(item)ます。あなたの例では、これは次のようになります。

var result = repo.GetAll(r => r.Email == myEmail &&
               applicationCollection.Contains(r.Application));
于 2013-07-15T22:40:35.603 に答える
0
ApplicationCollection.Contains(r.Application)
于 2013-07-15T22:40:37.613 に答える
0

.Contains(collection)の代わりに使用しinます。 あなたが欲しがっていたので、ここにリンクがあります。

于 2013-07-15T22:41:13.523 に答える
0

示した方法で記述したい場合は、次の拡張メソッドを記述できます。

public static bool In<T>(this T item, IEnumerable<T> set)
{
    return set.Contains(item);
}

そして、質問で行ったのとまったく同じように使用します。

Application[] applicationCollection = GetAllApplications();
var result = repo.GetAll(r =>
    r.Email == myEmail &&
    r.Application.In(applicationCollection));

インメモリ セットのみを使用している場合、これは問題なく機能します。ただし、LINQ-to-SQL のようなものを実行している場合、これは互換性がありません。

注: この拡張メソッドを使用するのが良いアイデアであると暗示しているわけではありません。そのようなものを作成できると言っているだけです。

于 2013-07-15T23:00:59.157 に答える