你们中的任何人都可以帮我解决这个问题吗?将'carsList'变量转换为'_vehicleList'
时出现此错误无法将'System.Data.Linq.DataQuery类型的对象强制转换为'System.Collections.Generic.List`1 [VehicleDAOModel]'。
Linq.DataQuery是否必须匹配VehicleDAOModel中的属性?
我的代码:
public class VehicleDAOModel
{
[Display(Name = "Id")]
public int _Id { get; set; }
[Required]
[Display(Name = "Year")]
public string _year { get; set; }
[Required]
[Display(Name = "Make")]
public string _make { get; set; }
[Required]
[Display(Name = "Model")]
public string _model { get; set; }
[Required]
[Display(Name = "Trim")]
public string _trim { get; set; }
}
// LINQ TO SQL CODE
var dataContext = new VehicleModelL2SQLDataContext();
var carsList = from v in dataContext.Vehicles
select v;
_vehicleList = (List<VehicleDAOModel>)carsList;
public List<VehicleDAOModel> _vehicleList = new List<VehicleDAOModel>();
尝试了以下但没有奏效: carsList.ToList(); (X) carsList.AsEnumerable()LoList(); (X)
提前谢谢。
答案 0 :(得分:0)
只需.ToList()
上的carsList
。
_vehicleList = carsList.ToList();
carsList是一个查询,一旦被读取就会被执行。 .ToList()读取完整的查询结果并将其作为List<T>
返回。
但是这确实会让查询返回VehicleDAOModel
。如果没有,那么你需要使用.Select()并自己转换它。
答案 1 :(得分:0)
假设您的车辆实体类未命名为“VehicleDAOModel”,您需要将项目 carsList
添加到VehicleDAOModel
个对象的列表中。
_vehicleList = carsList.Select( c =>
new VehicleDAOModel {
Id = c.Id,
Year = c.Year,
...
});
我强烈建议您使用Automapper:
Mapper.Map<Vehicle, VehicleDAOModel>();
_vehicleList = carsList.Project.To<VehicleDAOModel>();
(假设两个类之间存在1:1的属性名称映射。)