Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何-将Linq.DataQuery转换为Generic.List_C#_Linq - Fatal编程技术网

C# 如何-将Linq.DataQuery转换为Generic.List

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 = "

你们谁能帮我解决这个问题?将“carsList”变量强制转换为“\u 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>();
公共级车辆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();