2017-02-09 91 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); 
} 
相关问题