C# Lambda内部if语句?
如何在if语句中使用lambda将树节点的值与列表中的对象值进行比较?目前,我正在尝试类似的东西,但它不会工作。有没有更好的方法来简化我的搜索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 (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