如何从IGroup中删除元素

时间:2012-08-28 16:44:41

标签: c# windows-runtime

如何直接从IGrouping IGrouping<DateTime, VMAppointment>删除对象?

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

有什么想法吗?

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:3)

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

var groups = someList.GroupBy(x => x...);

foreach (var group in groups)
{
    var groupList = group.ToList();

   ...

    groupList.Remove(someItem);

    //Process the other code from groupList.
}

答案 2 :(得分:1)

如果您在群组中的某个媒体资源上有可测试条件(例如null),则可以使用var allButtonsPressed = false { didSet { if let items = tabBarController?.tabBar.items { items[1].isEnabled = allButtonsPressed } } } 投射并使用Select

TakeWhile

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