2017-02-09 89 views
1

我相信它不是一個困難的,但找不到任何東西。
我有一個List的對象,我想寫一個查詢來確定所有的具體屬性是否具有值1。
我想用LINQ \ Lambda這樣做。如何確定列表<T>中的所有對象是否具有相同的屬性值使用Linq

private bool IsTheSame(List<ContenderLeague> TryUpgradeConts) 
    { 
     bool IsTheSameValue = true; 
     foreach (ContenderLeague c in TryUpgradeConts) 
     { 
      if (c.Contender.Factor != 1) 
      { 
       IsTheSameValue = false; 
       break; 
      } 
     } 
     return IsTheSameValue; 
    } 
+1

[全部](https:/ /msdn.microsoft.com/en-us/library/bb548541(v=vs.110).aspx)。 –

+2

Linq所有即IsTheSameValue = TryUpgradeConts.All(c => c.Contender.Factor == 1)' – Nkosi

+1

您提供的代碼不檢查所有元素是否符合條件。它只會告訴你是否有Any。 – CSharpie

回答

5

你描述使用All擴展方法,你可以在其他的答案看什麼:

return TryUpgradeConts.All(c=>c.Contender.Factor == 1); 

但你的代碼的真正的翻譯使用Any

return TryUpgradeConts.Any(c=>c.Contender.Factor != 1); 

你正試圖找到一些不符合條件的元素

8
using System.Linq; // at the top of your code file 

改變的代碼

var allHaveContederFactorValueOne = TryUpgradeConts.All(i => i.Contender.Factor == 1); 

瞭解如何使用lambda表達式表達式和各種內置函數在框架狀AllAnyWhere,等他們使編碼更容易。

2

使用linq .All()方法。像下面的東西應該工作。

private bool IsTheSame(List<ContenderLeague> TryUpgradeConts) 
{ 
    return TryUpgradeConts.All(c => c.Contender.Factor == 1); 
} 
相關問題