如何使用Linq确定List <t>中的所有对象是否具有相同的属性值

时间:2017-02-09 21:51:48

标签: c# linq lambda

我认为它并不难,但找不到任何东西 我有List个对象,我想编写一个查询来确定所有对象的特定属性是否具有值1。 我想使用LINQ \ Lambda

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

3 个答案:

答案 0 :(得分:8)

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

修改代码

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

了解如何在框架中使用lambdas表达式和各种内置函数,如AllAnyWhere等。它们使编码变得更加容易。

答案 1 :(得分:5)

您所描述的内容正在使用All扩展方法,您可以在其他答案中看到:

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

但您的代码的真实翻译是使用Any

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

您正在尝试找到一些不符合条件的元素

答案 2 :(得分:2)

使用linq .All()方法。像下面这样的东西应该有效。

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