C# Lambda内部if语句?

C# Lambda内部if语句?,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,如何在if语句中使用lambda将树节点的值与列表中的对象值进行比较?目前,我正在尝试类似的东西,但它不会工作。有没有更好的方法来简化我的搜索 if (tvItems.Nodes.Count > 0) { // Get checked items listChecked= MenuItemDTOManager.GetMenuItems(); // foreach (TreeNode parentNode in tvItems.Nodes) {

如何在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
}
应该使用而不是
Find

if (listChecked.Any(s => s.menuId.ToString() == parentNode.Value.ToString()))
{
    parentNode.Checked = true;
}

可能您正在寻找以下内容

foreach (TreeNode parentNode in tvItems.Nodes.OfType<TreeNode>().Any(n=> listChecked.Any(s => s.menuId.ToString() == n.Value.ToString()))
{
    parentNode.Checked = true;
}
foreach(tvItems.Nodes.OfType()中的TreeNode parentNode.Any(n=>listChecked.Any(s=>s.menuId.ToString()==n.Value.ToString())
{
parentNode.Checked=true;
}

如果
只需要一个
bool

listChecked.Find(s => s.menuId.ToString() == parentNode.Value.ToString())
不会返回
bool


尝试使用而不是
Find

是的,您可以,因为您已经在if语句中显示lambda。但是您正在尝试做什么?什么不起作用?这不起作用,因为if返回bool&Find不起作用。不过,我找到了答案,这要感谢@Cuong Le