测试列表中的所有项目是否在某个项目之前完成

时间:2012-01-20 18:28:13

标签: c# linq

我有一个阶段列表,每个阶段都有IdStageNumber(即索引),NameProgress object,其中包含名为{{1}的bool字段}。

如何测试IsCompleted之前的所有项目(我将传递给方法的obj)是否完整?我有以下代码但是我得到了错误的返回,我已经检查了我的列表,并且阶段0被检查为my current stage

completed

1 个答案:

答案 0 :(得分:3)

一旦找到任何索引大于或等于你的阶段,它就会失败。我怀疑你想要:

Assert.IsTrue(progress.Stages.TakeWhile(stage => stage.StageNumber < indexToTest)
                             .All(stage => stage.Progress.IsCompleted));

这是假设阶段是有序的。如果他们不是,你真的想测试每个阶段 在你的索引之后/之后测试它已经完成了:

Assert.IsTrue(progress.Stages.All(stage => stage.StageNumber >= indexToTest
                                           || stage.Progress.IsCompleted));

编辑:如果它能帮助你思考它,可以选择以下方法:

Assert.IsFalse(progress.Stages.Any(stage => stage.StageNumber < indexToTest
                                            && !stage.Progress.IsCompleted));

这表示“ 之前indexToTest之前不应存在任何阶段。