我有一种方法,通过LINQ限制列表中的项目。该列表包含具有两个布尔属性的项目:bool_a和bool_b。该列表包含bool_a为true且bool_b为false的项目以及两者均为false的项目。意外的结果LINQ Where子句
我的期望是,一旦我限制了列表,只有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子句之前和之后使用计数来评估列表。
我不知道这是没有数据样本和相应的查询结果回答的。 –
而“问题陈述”有点奇怪的措辞。 – user7116