我正在写一个处理列表过滤的网站。用户选择一些选项,数据在服务器端过滤,并通过AJAX请求返回给用户。
对于这个例子,假设我有一张汽车制造商的表(福特,宝马,菲亚特等),并且它有一个外键可以列出他们所有车辆的清单,而这些车辆的外键还有一个车钥匙。类型。
所以它就像这样:
制造商
类型
车辆
这将作为一个很好的实体和一些方便的导航属性回来。然而,这是我面临的问题:假设我想根据内联的类型过滤制造商的车辆。
foreach (var manufacturer in manufacturers)
{
manufacturer.Vehicles = manufacturer.Vehicles.Any(v => v.Type.Name == "Car"));
}
这看起来非常简单,但我收到错误:
无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Data.Objects.DataClasses.EntityCollection'。存在显式转换(您是否错过了演员?)
转换为EntityCollection没有帮助,并在运行时抛出异常。甚至可以将Linq查询的结果分配给导航属性吗?还有另一种方法吗?我正在使用ViewModel,但我想重新使用导航属性,如果可以的话,而不是写在字典中并手动处理它。
答案 0 :(得分:0)
问题是 manufacturer.Vehicles 的类型是 EntityCollection 而 manufacturer.Vehicles.Any 会返回 IEnumerable ,所以你想尝试如下:
foreach ( manufacturer in manufacturers) {
manufacturer.Vehicles = (from vehicle in manufacturer.Vehicleswhere vehicle.Type.Name == "Car");
}