2013-04-03 17 views
0

我有一個List<T> linq方法的問題,其中T是一個自定義類。「選擇」或「任何」列表與自定義類的方法

這是我的課:

public class RoomWorkingPlan 
{ 
     public Int64 m_IdRoom; 
     public Dictionary<DateTime, List<WorkInterval>> workingPlan = new Dictionary<DateTime, List<WorkInterval>>(); 
} 

我試圖用任何方法或選擇這樣的名單:

List<RoomWorkingPlan> roomsworking = (List<RoomWorkingPlan>)m_RoomAvailable.Values.Cast<RoomWorkingPlan>().ToList(); 
DateTime startingDate = DateTime.now; 

if (!roomsworking.Any<RoomWorkingPlan>(r => r.workingPlan.ContainsKey(startingDate))) 
{ 
    return false; 
} 

,但我收到一條錯誤信息,說「表達不能包含Lambda表達式「。 任何想法? 在http://msdn.microsoft.com所有的例子中包含的Lamda表達式..

編輯: m_RoomAvailable是含有一個Int64作爲密鑰和RoomWorkingPlan作爲值的哈希表。

+0

這看起來不錯。我不認爲這個例外來自這條線。這聽起來像是一個異常,它會來自像Entity Framework或NHibernate這樣的ORM。請驗證引發異常的行。請顯示如何初始化m_RoomAvailable。 –

+0

什麼是'm_RoomAvailable',你爲什麼需要投它?順便說一句,我認爲你想'DateTime.Today'而不是'DateTime.Now'。 –

+0

我用m_RoomAvailable的定義編輯了我的帖子。 – MassiCiaoCiao

回答

0

您嘗試從快速監視窗口(Controllo immediato您的評論,從您的快照)在Visual Studio中運行拉姆達。無法在此窗口中評估Lambda表達式:這是Visual Studio的限制。只能在運行時在代碼中評估Lambda。

,這也是事實爲觀看當地人立即窗口。

如果你想調試lambdas,你必須在你的代碼中使用斷點。請注意,您只能訪問您的函子(謂詞,選擇器...)和結果。

欲瞭解更多信息:Visual Studio debugging "quick watch" tool and lambda expressions