如何从IGroup中删除元素

如何直接从IGrouping IGrouping删除对象?

我目前唯一知道的方法是生成一个没有concering元素的新IGrouping,但我不喜欢这种方式,因为它在我的应用程序中引起了一些麻烦。

有任何想法吗?

不,没有办法改变IGrouping<,> ,至少在一般情况下 – 即使你知道具体的类型,我也不相信.NET框架公开的任何实现都允许组变异。

据推测,分组是某些查询的结果 – 因此,如果可能,请更改原始查询以排除您不感兴趣的值。

我知道这是一个老问题,但希望这有助于其他人。 解决方法是将组强制转换为列表,然后使用列表中的值而不是组。

 var groups = someList.GroupBy(x => x...); foreach (var group in groups) { var groupList = group.ToList(); ... groupList.Remove(someItem); //Process the other code from groupList. } 

如果您在组中的属性上具有可测试条件(如示例中的null),则可以使用Select TakeWhile并使用TakeWhile

 var removedItemsList = group.Select(x => x.TakeWhile(t => t.someProperty != null)); 

这将返回IEnumerable>