我有一个对象,该对象具有需要检查的属性。仅当该属性列表中的所有项目均满足特定条件时,我才应该将标志设置为false。
foreach (Rows row in Result.Rows)
{
if (row.Number <= 0)
{
flag = false;
break;
}
}
如您所见,当前如果它找到一个行号<= 0的列表,它将标志的值设置为false。但是我想检查列表中的所有行,并且仅在所有行的行号为false时才设置为false。
答案 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,而不是完全跳过该赋值。