我正在对旧应用程序进行故障排除,并且很难理解为什么变量没有进入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搜索了各种错误消息,但我没有经验足以将我正在阅读的内容与我的代码相关联。
答案 0 :(得分:2)
你看错了。当你翻过变量时,它会给你结果,但基于这个:
x.DaType == datype.FirstOrDefault().IntakeServReqTypeKey has a value of "Complaint-DSDS"
你没有看正确的事情。布尔比较的值不能为&#34;投诉-DSDS&#34;。它可以是true
或false
。检查x.DaType
的值与IntakeServReqTypeKey
列表中第一项datype
的值之间的差值。对WHERE
子句中的每个位置执行此操作。
希望它有意义