0

如何在 if 语句中使用 lambda 将树节点的值与列表中的对象值进行比较?目前我正在尝试这样的事情,但它不会工作。有没有更好的方法来简化我的搜索?

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

if只需要一个bool值。

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 回答