私は一つ以上のリストのパス述語A()
、およびなしパス述語B()
で項目かどうかを確認する必要があるのLINQでクエリを書いているがある場合にのみ。 LinqからSQLを有効にするには、単一のクエリである必要があります。LINQの - すべてのチェックが、少なくとも1つの
1. [ a, a ] => true
2. [ a ] => true
3. [ a, b ] => false
4. [ b, b ] => false
5. [ b ] => false
6. [ ] => false
私は次のことを試してみたが、それぞれが、彼らは失敗する特定の状況があります:
// Fails in case 6
MyList.All(x => A(x) && !B(x));
// Fails in case 3
MyList.Where(x => !B(x)).Count(x => A(x)) > 0;
// This works, but it's not a single query anymore
MyList.All(x => A(x) && !B(x)) && Mylist.Count() > 0;
a
パスが
A()
と
b
パスが
B()
を述語述語ところ、以下のように、以下のリストの結果がでなければなりません
私がここに必要なのは、すべてに相当するものだと思っていますが、空のリストに対してはfalseを返します。たとえば、これはすべてのケースで合格となります:
MyList.AllButReturnFalseIfListIsEmpty(x => A(x) && !B(x));
どうすればいいですか?
賢い!私はこれが受け入れられた答えと同じくらい簡単であるとは確信していませんが、簡潔さの完全な印です。どちらもかなり外です。 –
ありがとうございます。私は@dasblinkenlightから今日何かを学んだので、好奇心から、 'Aggregate'クエリはSQLに変換されます(私はかなり' Max'がそうしていると思います)? –
Nevermind。私が推測しているように、EFは「集約」をサポートしていません。 –