2012-10-30 189 views
0

如何在if語句中使用lambda將treenode的值與列表中的對象值進行比較?目前我正在嘗試這樣的東西,但它不會工作。有沒有更好的方法來簡化我的搜索?Lambda裏面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 
} 
+3

是的,你可以因爲你已經在if語句中顯示了lambda表達式。但是你想要做什麼?什麼不行? – Maarten

+0

這是不工作,因爲如果返回布爾&查找不。不過,由於@Cuong Le,我找到了答案 –

回答

4

應該使用Any,而不是Find

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

也許你正在尋找以下。

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

if僅需要bool值。

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

Find將不會返回bool

嘗試使用Exists而不是Find