如何从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
。