LINQ - 无法使用自定义数据模型列表属性隐式转换类型

时间:2014-06-10 16:21:14

标签: c# asp.net-mvc linq

尽管使用各种LINQ线程打开了数十个浏览器选项卡,但我仍然无法使我的特定LINQ查询正常工作。

我正在使用ASP.NET MVC 5 Web应用程序,我的确切错误信息是:

Cannot implicitly convert type 
'System.Collections.Generic.List<string>' to 
'System.Collections.Generic.List<TurboApp.Models.Submodel>'

在我的控制器中,我正在尝试构建一个可以传递给视图的自定义数据模型。曲线球是我需要以这样一种方式对我的数据进行分组,即我可以得到零件/引擎细节列表,该零件将适合车辆的多个“子模型”。查询如下所示:

var parts = _db.vwFullPartData
.Where(d => d.VehicleMakeID == make &&
    d.VehicleModelID == model &&
    d.VehicleYearID == year)
.Take(20)
.GroupBy(d => new { d.PN, d.Description, d.Cyl, d.Liter, d.Fuel })
.Select(x => new TurboDetailsListViewModel
{
    Pn = x.Key.PN,
    Description = x.Key.Description,
    Cyl = x.Key.Cyl,
    Liter = x.Key.Liter,
    Fuel = x.Key.Fuel,

    Submodels = x.Select(s => s.Submodel).ToList()
});

然后我将parts传递给视图:

return PartialView("_PartList", parts);

我完全有可能在模型中遗漏了一些简单的东西。我专注于表格中的Submodel列,需要构建一些适用的Submodels。目前我正在尝试使用List但请告诉我是否有更好的方法。这是我的模型,名为TurboDetailsListViewModel.cs

namespace TurboApp.Models
{
    public class TurboDetailsListViewModel
    {
        public string Pn { get; set; }
        public string Description { get; set; }
        public string Cyl { get; set; }
        public decimal? Liter { get; set; }
        public string Fuel { get; set; }
        public List<Submodel> Submodels { get; set; }
    }

    public class Submodel
    {
        public string SubmodelName { get; set; }
    }
}

也许你们其中一位职业选手可以指出我正确的方向!一旦我正确填写了模型,我想我可以构建视图。我打算使用嵌套的Razor foreach循环。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

试试这个:

Submodels = x.Select(s => new Submodel{SubmodelName = s.Submodel}).ToList()