我对List<T>
的linq方法有疑问,其中T是自定义类。
这是我的班级:
public class RoomWorkingPlan
{
public Int64 m_IdRoom;
public Dictionary<DateTime, List<WorkInterval>> workingPlan = new Dictionary<DateTime, List<WorkInterval>>();
}
我正在尝试使用方法any或在这样的列表中选择:
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 :(得分:0)
您尝试在Visual Studio中的 快速监视 窗口( Controllo immediato ,来自评论中的快照)中运行lambda。无法在此窗口中评估Lambda表达式:这是Visual Studio的限制。 Lambda只能在运行时在代码中进行评估。
观看 , 当地人 和 立即< em> windows。
如果要调试lambdas,则必须在代码中使用断点。请注意,您只能访问仿函数(谓词,选择器...)和结果。
了解更多信息:Visual Studio debugging "quick watch" tool and lambda expressions