按原始组标准重新组合IGrouping

时间:2015-02-09 14:42:56

标签: c# linq

这听起来很愚蠢(也许答案很简单),但我没有看到解决这个问题的方法:

假设我有这个:

public IGrouping<T, Item> process<T>(IGrouping<T,Item> group)
{
       var toIgnore = group.AsEnumerable().Where(ignoreExpression);
       var toContinue = group.AsEnumerable().Except(toIgnore);      

       // how to group the "toContinue" Enumerable by the same criteria as the group ?
       //

       return newGroup;
 }

我想要做的是:我得到了小组,我想忽略每个小组中的一些项目(不是整个小组)。到现在为止还挺好。然后我想根据最初的标准对它进行重新组合 - 这就是我被困住的地方。

怎么可以这样做?我可以从分组中找到原始条件(当然是group.Key),但是如何通过group.Key将结果重新分组为“toContinue”(甚至toContinue.ToList())?

thx for suggestions

安德烈亚斯

1 个答案:

答案 0 :(得分:1)

组密钥在IGrouping Key属性上。

由于IGrouping是IEnumerable,因此一旦你创建了Where,你就会失去分组键。您必须在GroupBy()之前过滤,而不是在

之后过滤