具有内部Lambda表达式的Lambda表达式

时间:2013-07-04 13:27:24

标签: c# .net lambda closures

The type or namespace name 'c' could not be found (are you missing a using directive or an assembly reference?)

当我尝试从下面运行代码时,我从上面得到了错误。

this.Calendar.Entries.Any<CalendarEntry>(c => c.Date.Date == date.Date && Filters.Any<Type>(f => typeof(c).IsInstanceOfType(f)));

有谁知道为什么这不起作用?如果我可以让它工作?

感谢。

编辑:

现在还知道它为什么不能像我最初写的那样起作用,但是当我这样写它时它会起作用:

Filters.Any<Type>(f => this.Calendar.Entries.Where<CalendarEntry>(c => c.Date.Date == date.Date).SingleOrDefault().GetType().IsInstanceOfType(f));  

1 个答案:

答案 0 :(得分:6)

typeof 仅适用于类型名称。如果您需要c的运行时类型,则必须使用Object.GetType并说出c.GetType()

因此,编译器看到typeof(c)并且知道typeof只接受类型名称,因此尝试勇敢地在某处找到a type named c,但是,唉,它不能。所以,它告诉你“我找不到类型c。”