【发布时间】:2014-04-05 17:30:03
【问题描述】:
我有一个List<Order>,我正在尝试使用 LINQ 过滤它:
var grouped = from o in orders
group o by o.OrderNumber into g
select new { Id = g.Key, Orders = g };
var GroupedList = grouped.ToList();
int max = GroupedList.Count();
int count = 0;
var filtered =
from g in GroupedList
where IncrementProgress(max, ref count)
select g.Id;
var filteredOrders = orders.Where(o => filtered.Contains(o.OrderNumber));
在IncrementProgress 内部,我将count 和max 打印到调试输出。 max 在我的测试 3500 中,我从 count 获得了 150000 和计数的输出。
有人知道为什么吗?
PS:在我的生产代码中有过滤逻辑而不是IncrementProgress。
更新:
这里是IncrementProgress-方法:
private bool IncrementProgress(int max, ref int count)
{
Debug.WriteLine("Filtering {0} of {1}", ++count, max);
return true;
}
【问题讨论】:
-
你能告诉我们
IncrementProgress方法吗?
标签: c# linq linq-to-objects