当有明显结果时,“枚举没有产生任何结果”

时间:2017-03-03 20:59:24

标签: c# linq ienumerable generic-collections

我正在对旧应用程序进行故障排除,并且很难理解为什么变量没有进入foreach循环。我的问题是我在处理Generics / Collections / LINQ方面的经验非常有限。如果这是一个基本问题,请原谅。

我有以下变量:

var allegationlist = allegation.Where(x => x.DaType == datype.FirstOrDefault().IntakeServReqTypeKey && x.DaSubType == subtypedetail.FirstOrDefault().ClassKey && x.DaNumber == daNumber);

当我将鼠标悬停在where语句中的每个元素上时,它们都有值。例如:

x.DaType == datype.FirstOrDefault().IntakeServReqTypeKey has a value of "Complaint-DSDS"

x.DaSubType == subtypedetail.FirstOrDefault().ClassKey has a value of "IHS"

x.DaNumber == daNumber has a value of "201706218360"

但是,如果我将鼠标悬停在指控列表上,则结果视图会显示“枚举未产生任何结果”。

当我查看基数时,Current和null一样,System.Collections.IEnumerator.Current。

当我查看枚举器时,Current为null,System.Collections.IEnumerator.Current是

System.Collections.IEnumerator.Current  '((System.Linq.Enumerable.WhereListIterator<CaseCompass.Intake.NewIntakeHelper.AllegationHelper>)allegationlist).enumerator.System.Collections.IEnumerator.Current' threw an exception of type 'System.InvalidOperationException'   object {System.InvalidOperationException}

如果我深入了解System.Collections.IEnumerator.Current,则基本状态为:

{"Enumeration has either not started or has already finished."} System.SystemException {System.InvalidOperationException} 

和堆栈跟踪状态:

    StackTrace  "   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)\r\n   at System.Collections.Generic.List`1.Enumerator.System.Collections.IEnumerator.get_Current()"    string

还有一个列表部分,其中包含以下信息:

[0] {CaseCompass.Intake.NewIntakeHelper.AllegationHelper}   CaseCompass.Intake.NewIntakeHelper.AllegationHelper
        AllegationId    {58323453-1ee3-4cef-ba2a-e1da6fd95c16}  System.Guid
        AllegationName  "Contract"  string
        DaNumber    "201706218360"  string
        DaSubType   "In-Home Services"  string
        DaType  "Complaint-DSDS"    string
        GridRowIndex    0   int
        Indicators  Count = 1   System.Collections.Generic.List<string>
        ParentGridRowIndex  0   int
        SubtypeId   "bf713051-359a-4091-9f0f-afa5019304e9"  string
        Typeid  "3cdc658e-947c-497c-8fb1-2bb9dc026baa"  string

在源部分

中也可以找到相同的信息

我已经用Google搜索了各种错误消息,但我没有经验足以将我正在阅读的内容与我的代码相关联。

1 个答案:

答案 0 :(得分:2)

你看错了。当你翻过变量时,它会给你结果,但基于这个:

x.DaType == datype.FirstOrDefault().IntakeServReqTypeKey has a value of "Complaint-DSDS"

你没有看正确的事情。布尔比较的值不能为&#34;投诉-DSDS&#34;。它可以是truefalse。检查x.DaType的值与IntakeServReqTypeKey列表中第一项datype的值之间的差值。对WHERE子句中的每个位置执行此操作。

希望它有意义