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

Ste*_*kal 2 .net c# lambda closures

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

当我尝试从下面运行代码时,我遇到了上面的错误.

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

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

谢谢.

编辑:

现在仍然知道为什么它不能像我最初写的那样起作用,但它在我写这样的时候起作用:

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

jas*_*son 6

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

因此,编译器看到typeof(c)并知道typeof它只接受类型名称,因此勇敢地尝试找到一个名为c somewhere 的类型,但是,唉,它不能.所以,它告诉你"我找不到那种类型c."