我有一个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] 删除。
我来说两句