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

您的一个名字是空字符串。哦,天哪……真尴尬。你当然是对的。我现在要睡觉了,对我的大脑来说显然太晚了!