0

我正在写一个处理列表过滤的网站。用户选择一些选项,数据在服务器端过滤并通过 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,但如果可以的话,我想重新使用导航属性,而不是在字典中编写并手动处理所有内容。

4

1 回答 1

0

问题是manufacturer.Vehicles的类型是EntityCollectionmanufacturer.Vehicles.Any返回一个IEnumerable类型的对象,所以你想尝试如下:

foreach ( manufacturer in manufacturers) {
   manufacturer.Vehicles = (from vehicle in manufacturer.Vehicleswhere vehicle.Type.Name == "Car");
}
于 2012-08-17T16:50:38.100 回答