c#linq Groupby查询忽略布尔上的Where

c#linq Groupby查询忽略布尔上的Where,c#,linq,C#,Linq,我有一个IEnumerable,我想先用它过滤。在bool上的Where,然后像这样的GroupBy int someInt = orderEditorViewModel.EditOrderFitters.Where(f => f.Delete == false).GroupBy(f => f.OrderFitter.Person).Count(); EditOrderFitters是一个 public class EditOrderFitter {

我有一个IEnumerable,我想先用它过滤。在bool上的Where,然后像这样的GroupBy

int someInt = orderEditorViewModel.EditOrderFitters.Where(f => f.Delete == false).GroupBy(f => f.OrderFitter.Person).Count();
EditOrderFitters是一个

    public class EditOrderFitter
    {
        [Display(Name = "Delete?")]
        public bool Delete { get; set; }
        public bool Added { get; set; }  // this is hidden
        public OrderFitter OrderFitter { get; set; }
    }
但即使Delete为true,查询也包括EditOrderFitter

我先用这个冗长的解决方法过滤掉

List<EditOrderFitter> notDeletedOrderFitters = new List<EditOrderFitter>();
      foreach (EditOrderFitter e in orderEditorViewModel.EditOrderFitters)
      {
          if (!e.Delete)
          {
              notDeletedOrderFitters.Add(e);
          }
      }
这是可行的,但这有什么问题吗

.Where(f => f.Delete == false)
在第一个linq查询中。我也试过:

int someInt = orderEditorViewModel.EditOrderFitters.Where(f => !f.Delete).GroupBy(f => f.OrderFitter.Person).Count();
但同样,该列表没有被过滤

向大家道歉,我正在查看此if语句的LHS,以测试列表中的重复条目,而我本应同时查看这两个条目

if (orderEditorViewModel.EditOrderFitters.Where(f => f.Delete == false).GroupBy(f => f.OrderFitter.Person).Count() < orderEditorViewModel.EditOrderFitters.Where(f => f.Delete == false).Count())
if(orderEditorViewModel.editorfitters.Where(f=>f.Delete==false).GroupBy(f=>f.OrderFitter.Person).Count()f.Delete==false).Count()
感谢您的回复和评论!
我忘了在两边都删除了

我刚刚复制了你的情况,它给了我正确的结果,你可以检查一下生活


它是EF还是内存中的集合?循环应该与
orderEditorViewModel.EditOrderFitters.Where(f=>!f.Delete).ToList()完全相同。是的,我错了,我已经编辑了这个问题。谢谢你,我错了,我已经编辑了这个问题。非常感谢。这帮助我睁开眼睛,看到了错误。
if (orderEditorViewModel.EditOrderFitters.Where(f => f.Delete == false).GroupBy(f => f.OrderFitter.Person).Count() < orderEditorViewModel.EditOrderFitters.Where(f => f.Delete == false).Count())
using System;
using System.Linq;
// https://stackoverflow.com/questions/59702370/c-sharp-linq-groupby-query-ignoring-where-on-bool

public class Program
{
    public static void Main()
    {
        var orderEditorViewModel = new 
        {
            ParentName = "xyz",
            EditOrderFitters = new [] 
            {
                new EditOrderFitter { Delete = true, OrderFitter = new OrderFitter { Id = 1, Person = "1" } },

                new EditOrderFitter { Delete = false, OrderFitter = new OrderFitter { Id = 1, Person = "2" } },

                new EditOrderFitter { Delete = false, OrderFitter = new OrderFitter { Id = 1, Person = "2" } },

                new EditOrderFitter { Delete = false, OrderFitter = new OrderFitter { Id = 1, Person = "3" } }
            }
        };

        var result = orderEditorViewModel.EditOrderFitters.Where(f => !f.Delete).GroupBy(f => f.OrderFitter.Person);
        foreach(var item in result)
            Console.WriteLine("" + " Count: " + item.Count());

    }

    public class EditOrderFitter
    {

        public bool Delete { get; set; }
        public bool Added { get; set; }
        public OrderFitter OrderFitter { get; set; }
    }

    public class OrderFitter 
    {
        public int Id { get; set; }
        public string Person { get; set; }
    }

}