Lambda表达式不起作用

时间:2012-12-20 09:16:19

标签: c# lambda

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

我尝试使用“全部”但它返回一个bool并且在这种情况下不起作用。我怎样才能用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 个答案:

答案 0 :(得分:2)

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

您想使用ForEach() -

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

答案 1 :(得分:1)

您可以使用:

foreach (var perm in permGroup.SelectMany(x => x.Permissions))
{
  perm.Selected = false;
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这是另外两种方式

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

foreach (var permission in groups.SelectMany(x => x.Permissions))
                permission.Selected = false;