我正在尝试清除属性的所有现有选择,但它不使用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;
}
}
答案 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;