1

我正在尝试清除属性的所有现有选择,但它不适用于 lambda 表达式。

我试过使用“All”,但它返回一个布尔值,在这种情况下不起作用。如何使用 lambda 完成此操作?

var permGroup =  (ObservableCollection<PermissionGroup>)
                       this.choicesOptionsTree.ItemsSource;

// NOT WORKING 
permGroup.All(pg => pg.Permissions.All); 

// WORKING               
//clear all existing selections).
foreach (var perGrp in permGroup)
{
    foreach (var perm in perGrp.Permissions)
    {
        perm.Selected = false;
    }
}
4

4 回答 4

2

All()用于确定集合中的所有元素是否满足给定条件,而不是对所有元素执行操作。

你想使用ForEach()-

permGroup.ForEach(pg => pg.Permissions.ForEach(perm => perm.Selected = false));
于 2012-12-20T09:19:53.257 回答
1

您可以使用:

foreach (var perm in permGroup.SelectMany(x => x.Permissions))
{
  perm.Selected = false;
}
于 2012-12-20T09:18:15.267 回答
0
permGroup.ForEach(pg => pg.Permissions.ForEach(p => p.Selected = false)); 
于 2012-12-20T09:19:00.617 回答
0

这是另外几种方法

permGroup.SelectMany(pg => pg.Permissions).ForEach(x => x.Selected = false);

或者

foreach (var permission in groups.SelectMany(x => x.Permissions))
                permission.Selected = false;
于 2012-12-20T09:24:15.733 回答