我有以下的集合
// The collection to query
var stageTable = new List<Stage>
{
new Stage {StageId = 1, LifecycleId = 1, StageSeqNo = 1},
new Stage {StageId = 2, LifecycleId = 1, StageSeqNo = 2},
new Stage {StageId = 3, LifecycleId = 1, StageSeqNo = 3},
new Stage {StageId = 4, LifecycleId = 1, StageSeqNo = 4},
new Stage {StageId = 5, LifecycleId = 2, StageSeqNo = 1},
new Stage {StageId = 6, LifecycleId = 2, StageSeqNo = 2},
new Stage {StageId = 7, LifecycleId = 2, StageSeqNo = 3},
new Stage {StageId = 8, LifecycleId = 2, StageSeqNo = 4},
};
我正在尝试构建一个查询,该查询将返回下一个阶段(Stage)
,给定一个当前阶段(currentStage)
,但包含在由LifecycleId
定义的同一子集中,例如,给定currentStage = 2
,我希望能得到stageId = 3
的阶段(Stage)
,但是如果currentStage = 4
,由于LifecycleId
切换到值2
,我希望得到null
。
这是我的代码:
var lifecycleId = stageTable
.Where(x => x.StageId == currentStageId)
.Select(x => x.LifecycleId);
var nextStage = stageTable
.Where(s => s.LifecycleId == lifecycleId.First())
.SkipWhile(s => s.StageId != currentStageId)
.Skip(1).FirstOrDefault();
看起来它可以工作,但是否有一种方法可以在单个查询中执行此操作?