C# 如何-将Linq.DataQuery转换为Generic.List
你们谁能帮我解决这个问题?将“carsList”变量强制转换为“\u vehicleList”时出现此错误 无法将“System.Data.Linq.DataQuery”类型的对象强制转换为“System.Collections.Generic.List`1[VehicleDAOModel]”类型。 Linq.DataQuery是否必须与VehicleDAOModel中的属性匹配 我的代码:C# 如何-将Linq.DataQuery转换为Generic.List,c#,linq,C#,Linq,你们谁能帮我解决这个问题?将“carsList”变量强制转换为“\u vehicleList”时出现此错误 无法将“System.Data.Linq.DataQuery”类型的对象强制转换为“System.Collections.Generic.List`1[VehicleDAOModel]”类型。 Linq.DataQuery是否必须与VehicleDAOModel中的属性匹配 我的代码: public class VehicleDAOModel { [Display(Name = "
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>();
公共级车辆DAO模型
{
[显示(Name=“Id”)]
公共int_Id{get;set;}
[必需]
[显示(Name=“Year”)]
公共字符串_year{get;set;}
[必需]
[显示(Name=“Make”)]
公共字符串_make{get;set;}
[必需]
[显示(Name=“Model”)]
公共字符串_model{get;set;}
[必需]
[显示(Name=“Trim”)]
公共字符串_trim{get;set;}
}
//LINQ到SQL代码
var dataContext=new VehicleModelL2SQLDataContext();
var carsList=来自dataContext.Vehicles中的v
选择v;
_车辆列表=(列表)车辆列表;
公共列表_vehicleList=新列表();
尝试了以下操作,但无效:
carsList.ToList();(十)
carsList.AsEnumerable().LoList();(十)
提前谢谢。只需在carsList
上执行.ToList()
_vehicleList = carsList.ToList();
carsList是一个查询,一旦从中读取,就会执行该查询。.ToList()读取完整的查询结果,并将其作为列表返回
_vehicleList = carsList.ToList();
但这确实要求查询返回VehicleDAOModel
s。如果没有,则需要使用.Select()并自行转换。假设您的车辆实体类未命名为“VehicleDAOModel”,则需要将carsList
投影到VehicleDAOModel
对象列表中
_vehicleList = carsList.Select( c =>
new VehicleDAOModel {
Id = c.Id,
Year = c.Year,
...
});
我强烈建议使用以下方法:
Mapper.Map<Vehicle, VehicleDAOModel>();
_vehicleList = carsList.Project.To<VehicleDAOModel>();
Mapper.Map();
_vehicleList=carsList.Project.To();
(假设两个类之间有1:1的属性名称映射。)向我们展示车辆的结构。我认为他应该在linq
statemenet之前声明vehicleList
。他不需要在查询之前声明,就在为其赋值之前。我把代码理解为实际行的示例,不一定是正确的顺序。谢谢Hans。尝试了以下操作但无效:carsList.ToList();carsList.AsEnumerable().LoList();