1

プロパティの既存の選択をすべてクリアしようとしていますが、ラムダ式では機能しません。

「All」を使用してみましたが、ブール値が返され、この場合は機能しません。ラムダを使用してこれを達成するにはどうすればよいですか?

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.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 に答える
0
permGroup.ForEach(pg => pg.Permissions.ForEach(p => p.Selected = false)); 
于 2012-12-20T09:19:00.617 に答える