2013-07-04 104 views
2
The type or namespace name 'c' could not be found (are you missing a using directive or an assembly reference?) 

當我嘗試從下面運行代碼時,我從上面找到了錯誤。帶內部Lambda表達式的Lambda表達式

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)); 

回答

6

typeof適用於類型名稱。如果您需要運行時類型c,則必須使用Object.GetType並說c.GetType()

所以,編譯器看到typeof(c),知道typeof只接受類型名稱,因此試圖英勇找到a type named c地方,任何地方,但,唉,它不能。所以,它告訴你「我找不到c」。

+0

謝謝。有用!!!我很傻,忘記了如何使用typeof :) –