c#linq Groupby查询忽略布尔值

沙克罗伯特

我有一个IEnumerable,正在尝试首先使用.Wool过滤,然后像这样的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);
          }
      }

接着:

int someInt = notDeletedOrderFitters.GroupBy(f => f.OrderFitter.Person).Count();

可以,但是

.Where(f => f.Delete == false)

在第一个linq查询中。我也尝试过这个:

int someInt = orderEditorViewModel.EditOrderFitters.Where(f => !f.Delete).GroupBy(f => f.OrderFitter.Person).Count();

但同样,该列表没有被过滤

不好意思,我正在查看这个if语句的LHS,以便在我应该同时查看两个if语句时测试列表中的重复条目

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; }
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

端口NDepend CQLINQ查询到C#LINQ

来自分类Dev

C#Linq GroupBy,获取每个组中的列的列表

来自分类Dev

C#LINQ to Entities无法识别方法“布尔”

来自分类Dev

C#Linq查询将类型返回到字典

来自分类Dev

最快的C#Linq查询下拉

来自分类Dev

C#LINQ将扩展翻译为查询语法

来自分类Dev

C#LINQ查询-没有隐式转换错误

来自分类Dev

多维数组上的C#LINQ查询

来自分类Dev

C#LInq子查询问题

来自分类Dev

C#LINQ查询创建意外的新行

来自分类Dev

C#LINQ查询中的ToString转换

来自分类Dev

c#linq获取当前值和先前值

来自分类Dev

C#linq查询过滤器子集合

来自分类Dev

在C#LINQ中反向查询列表

来自分类Dev

c#linq GroupBy对列表中的列表值

来自分类Dev

带有多个等待连接的C#Linq查询

来自分类Dev

C#Linq查询未返回可枚举的集合

来自分类Dev

C#Linq GroupBy ==>类vs匿名类---结果不同

来自分类Dev

C#LINQ to Entities无法识别方法“布尔”

来自分类Dev

c#linq中对此进行查询有困难吗?

来自分类Dev

C#Linq联接查询

来自分类Dev

C#LINQ Xml查询混乱

来自分类Dev

优化C#LINQ查询

来自分类Dev

C#Linq和Groupby一样的项目

来自分类Dev

C#Linq在GroupBy中分配匿名类型

来自分类Dev

C#LINQ XML查询

来自分类Dev

C#Linq XML GroupBy通过OrderBy得到计数

来自分类Dev

需要C#linq查询枢轴数据

来自分类Dev

C#Linq获得确切值