0

ifステートメント内でラムダを使用してツリーノードの値をリスト内のオブジェクト値と比較するにはどうすればよいですか?現在、私はこのようなことを試みていますが、うまくいきません。検索を簡素化するためのより良い方法はありますか?

if (tvItems.Nodes.Count > 0)
{
    // Get checked items
    listChecked= MenuItemDTOManager.GetMenuItems();
    //

    foreach (TreeNode parentNode in tvItems.Nodes)
    {
        if (listChecked.Find(s => s.menuId.ToString() == parentNode.Value.ToString()))
        {
            parentNode.Checked = true;
        }
    }
    // Traverse children
}
4

3 に答える 3

4

Anyの代わりに使用する必要がありますFind

if (listChecked.Any(s => s.menuId.ToString() == parentNode.Value.ToString()))
{
    parentNode.Checked = true;
}
于 2012-10-30T07:57:32.433 に答える
2

ifbool値のみが必要です。

listChecked.Find(s => s.menuId.ToString() == parentNode.Value.ToString())

検索は返されませんbool

の代わりにExistsを使用してみてくださいFind

于 2012-10-30T08:00:48.883 に答える
1

おそらくあなたは次のことを探しています。

foreach (TreeNode parentNode in tvItems.Nodes.OfType<TreeNode>().Any(n=> listChecked.Any(s => s.menuId.ToString() == n.Value.ToString()))
{
    parentNode.Checked = true;
}
于 2012-10-30T07:58:09.280 に答える