具有通用IEnumerable值的Lambda表达式

时间:2016-04-07 14:54:12

标签: c# linq generics lambda

我有以下声明:

AnotherClass temp = myCustomList
    .Where(x => x.bTyp != null && x.bTyp is IEnumerable<T>)
    .FirstOrDefault();`

上面的陈述说tempnull,但它不是。{/ p>

T获取List的{​​{1}}的通用MyCustomClass,如List<MyCustomClass>

x.bTyp的值为typeof(IEnumerable<MyCustomClass>))

调试器为我提供了myCustomList这样的内容:

bTyp = {System.Collections.Generic.IEnumerable 1 [... MyCustomClass]}`

我应该如何重写temp不是null并且会返回结果的声明?

1 个答案:

答案 0 :(得分:0)

Temp为null,因为Where()调用返回0结果而FirstOrDefault()返回默认值(为null)。

要进行调试,请将光标放在lambda表达式中并添加断点(默认值:F9)。运行程序。

当调试器到达断点时,在监视窗口中放置布尔表达式(x.bTyp!= null和x.bTyp是IEnumerable)以验证所需的结果。你有可能在这里遗漏一些东西。

guide