我正在写一个处理列表过滤的网站。用户选择一些选项,数据在服务器端过滤并通过 AJAX 请求返回给用户。
对于这个例子,假设我有一个汽车制造商表(福特、宝马、菲亚特等),它有一个指向所有车辆列表的外键,而该列表又具有一个指向车辆类型表的外键。
所以它会是这样的:
制造商
- 制造商ID
- 姓名
类型
- 类型ID
- 姓名
车辆
- 车辆ID
- 制造商ID
- 类型ID
- 姓名
这将作为一个不错的实体和一些方便的导航属性返回。但是,这是我面临的问题:假设我想根据类型过滤制造商的车辆,内联。
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,但如果可以的话,我想重新使用导航属性,而不是在字典中编写并手动处理所有内容。