private Incident incident = null;
incident = (Incident)(rdc.Incidents.Where(i => i.ID == ID));
我得到以下异常:
无法将类型为'System.Data.Linq.DataQuery`1 [WPF.Incident]'的对象强制转换为'WPF.Incident'。
我需要一个事件实例来像这样使用它:
IList listInjury = ((IListSource)incident.Incident_Injuries.OrderBy(m => m.Employee.LastName)).GetList();
答案 0 :(得分:5)
尝试:
incident = rdc.Incidents.First(i => i.ID == ID);
答案 1 :(得分:4)
Where方法可以返回多个结果(可能不是在你的特定情况下,但在一般情况下它可以),所以你需要使用像Mehrdad所描述的First方法获得第一个(并且可能是唯一的)结果
答案 2 :(得分:1)
代码
(Incident)(rdc.Incidents.Where(i =>i.ID == ID))
返回一个序列IEnumerable<Incident>
,你试图将其转换为Incident类型。这就是为什么你得到InvalidCastException,因为那些类型不兼容。正如Mehrdad所说,你可以使用First。但是,如果序列不包含任何元素,First将抛出异常。这可能是也可能不是所希望的。如果不需要异常,则可以调用DefaultOrEmpty,如果序列不包含任何元素,则会返回该类型的默认值。如果Incident是引用类型,则默认值为null,您应该在代码中添加空检查并适当处理该情况。