如何在列表的每次迭代中检查值

时间:2018-11-26 23:50:33

标签: c#

我有一个对象,该对象具有需要检查的属性。仅当该属性列表中的所有项目均满足特定条件时,我才应该将标志设置为false。

foreach (Rows row in Result.Rows)
{
    if (row.Number <= 0)
    {
        flag = false;
        break;
    }
} 

如您所见,当前如果它找到一个行号<= 0的列表,它将标志的值设置为false。但是我想检查列表中的所有行,并且仅在所有行的行号为false时才设置为false。

3 个答案:

答案 0 :(得分:3)

您可以使用LINQ:

if(Result.Rows.All(x => x.Number <= 0))
{
    flag = false;
}

以下是有关All方法的更多文档:https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.all?view=netframework-4.7.2

答案 1 :(得分:1)

这是非LINQ解决方案。您只需要反转逻辑并将其默认设置为false

var flag = false;
foreach (Rows row in Result.Rows)
{
    if (row.Number > 0)
    {
        flag = true;
        break;
    }
}

答案 2 :(得分:0)

您可以使用All LINQ扩展名快速获得所需的结果。

flag = !Result.Rows.All(x => x.Number <= 0);

我假设当您说“仅当设置为false时”是指仅在所有行的Number属性为<= 0时才应该为false,而不是完全跳过该赋值。

相关问题