这听起来很愚蠢(也许答案很简单),但我没有看到解决这个问题的方法:
假设我有这个:
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
安德烈亚斯
答案 0 :(得分:1)
组密钥在IGrouping Key属性上。
由于IGrouping是IEnumerable,因此一旦你创建了Where,你就会失去分组键。您必须在GroupBy()之前过滤,而不是在
之后过滤