3列のテーブルがあります。
名前 varchar
Test1 ビット
Test2 ビット
グループ varchar
目的:
グループごとの名前ごとにtest1のみがtrueであるすべての行を選択したいと思います。
明確にするために、これらのサンプルレコードを取り上げます。
Name | Test1 | Test2 | Group
Foo True False Group 1
Bar True False Group 1
Bar False True Group 2
Foo False True Group 1
123 True False Group 1
2番目の行が選択されます。これは、同じ「名前」の値を持つ同じグループのTest2に対してtrueがテストされたことがないためです。
表のある時点で、同じグループ名のTest2に対してtrueとテストされているため、最初の行は選択されません。
Test2で真のテストが行われたことがないため、最後の行が選択されます。
注:明示的に検索するグループ名があります。
私が試したこと
私が試した(そしてそれが機能する)のは、テスト1が真であるすべての行を選択することです。次に、各IDに対して別の検索を実行し(この最初のクエリの結果を繰り返し処理)、再度表示されるかどうかをテストしました。ここで行ったことは回避策ですが、Linqには「存在しない」機能がたくさんあることを理解しており、それらを利用して、これまでに書いたものの状態を改善したいと思っています。 1つのステートメントにまとめます。
コード例
var items = itemsTable.Where(o => o.Group.Equals(GroupName) && o.Test1);