列出lambda表达式,为一个特定查询抛出InvalidOperationException

Sim*_*mon 0 c# linq-to-objects

我有这个片段.

List<Frames> FrameList;
Run Code Online (Sandbox Code Playgroud)

其中Frames是一个只包含字符串的类,包括字符串字段"ExerciseID".

...


void GetFramesForExercise(string exerciseID)

    ....

    if (exerciseID == "3.2.2") { 
       Console.Write(""); }  // quick and dirty to add a breakpoint

    if (FramesList[115].ExerciseID.Equals(exerciseID)) { 
       Console.Write(""); } // quick and dirty to add a breakpoint

    frames = (Frames)FramesList.Single(r => r.ExerciseID.Equals(exerciseID));
Run Code Online (Sandbox Code Playgroud)

通过在console.write语句上添加断点,我能够看到exerciseID确实等于"3.2.2"并且FramesList [115]指向一个ID等于"3.2.2"的Exercise实例.指向的实例正确初始化.

为什么我的查询会抛出InvalidOperationException?

Raw*_*ing 6

如果有多个匹配元素,Single则会抛出一个InvalidOperationException.(正如您所检查的那样,至少有一个匹配,这是我可以看到您获得此异常的唯一原因.)

请参阅本页的"例外"部分.