C# LINQPad索引超出范围异常
当我运行此代码时C# LINQPad索引超出范围异常,c#,linq,linqpad,C#,Linq,Linqpad,当我运行此代码时 var res = from name in Util.Cmd (@"dir") where name[0] == '1' select name; res.Dump(); 当计算res.Dump()行时,我得到一个目录列表,然后是一个IndexOutofBoundsException。我希望看到一个目录列表,后面是另一个列表,仅显示第一个字符为1的行 但是,如果我运行: var res = from name in Util.Cmd
var res = from name in Util.Cmd (@"dir")
where name[0] == '1'
select name;
res.Dump();
当计算res.Dump()
行时,我得到一个目录列表,然后是一个IndexOutofBoundsException
。我希望看到一个目录列表,后面是另一个列表,仅显示第一个字符为1
的行
但是,如果我运行:
var res = from name in Util.Cmd (@"dir")
where name.Length > 1 && name[0] == '1'
select name;
res.Dump();
我得到了预期的行为(即所有长度大于1且以1
开头的行)。没有抛出异常
所以我的问题是,为什么第一个代码段会导致异常?直到运行
Dump
命令,才实际计算where name[0]==“1”
子句。在此之前,它只是一个延迟执行的查询。问题是,Util.Cmd
返回的一个值是空字符串,因此您会得到一个IndexOutOfBoundsException
您的一个名字是空字符串。哦,天哪……真尴尬。你当然是对的。我现在要睡觉了,对我的大脑来说显然太晚了!