LINQ を介してリスト内の項目を制限する方法があります。このリストには、bool_a と bool_b の 2 つのブール型プロパティを持つアイテムが含まれています。このリストには、bool_a が true で bool_b が false であるアイテムと、両方が false であるアイテムが含まれています。
リストを制限すると、bool_a が false であるレコードのみが残り、bool_a と bool_b の両方が false であるすべてのアイテムが削除されることを期待しています。ただし、すべてのアイテムが削除されていることがわかりました。AND 演算子が OR のように動作しているように見えます。
以下に例を示します。何が表示されないのですか?
var records = GetRecords();
var count_where_a_before = records .Where(x => x.bool_a); // 100 items
var count_where_ab_before = records .Where(x => x.bool_a && x.bool_b); // 10 items
records = records.Where(x => !x.bool_a && !x.bool_b);
var count_where_a_after = records .Where(x => x.bool_a); // 0 items
上記からわかるように、リストを評価するために where 句の前後にカウントを使用しています。