C# Linq到SQL返回列表对象

C# Linq到SQL返回列表对象,c#,linq-to-sql,C#,Linq To Sql,我有这个模型,连接两个桌车和一个模型。我只能看到模型中的数据。因此,如果它返回两个模型,它将只显示一条记录。我试图返回一个对象列表 模型 这正在工作,但我需要将其作为列表 Model = t.Model.DisplayName 更新 var CarsModel = (from c in UnitOfWork.GetRepository<Cars>().Get() join m in UnitOfWork.GetRepository<

我有这个模型,连接两个桌车和一个模型。我只能看到模型中的数据。因此,如果它返回两个模型,它将只显示一条记录。我试图返回一个对象列表

模型

这正在工作,但我需要将其作为列表

Model = t.Model.DisplayName 
更新

var CarsModel = (from c in UnitOfWork.GetRepository<Cars>().Get()
                      join m in UnitOfWork.GetRepository<Model>().Get() on c.Id equals m.CarId
                      select new CarsModel 
                      {
                      Car = c,
                      Model = m
                      }
                );



public class CarsModel 
{
    public CarsCars{ get; set; }
    public IEnumerable<Model> Model{ get; set; }
}
var CarsModel=(来自UnitOfWork.GetRepository().Get()中的c)
在c上的UnitOfWork.GetRepository().Get()中加入m。Id等于m.CarId
选择新汽车模型
{
汽车=c,
型号=m
}
);
公共级汽车模型
{
公共汽车{get;set;}
公共IEnumerable模型{get;set;}
}

我假设您在这里使用的是EntityFramework。通常你会以某种方式将这两件事联系在一起,如果其中一件是另一件的孩子,你可以把它包括在内,然后两者都会连接起来。如果没有,那么您必须手动加载每个实例并构建您自己返回的模型。EF不会为你做的。它将无法以您想要的方式投影这两个单独的实体。我认为你能让它工作的唯一方法是痛苦的/闲聊的经历。此外,如果将其保留为IEnumerable或不执行.ToList(),则查询不会运行,因此,如果在上下文有机会运行之前将其删除,您也会遇到麻烦。希望您能做到这一点,但我不知道您的模型:

var result = UnitOfWork.GetRepository<Cars>().Get().Include(a => a.Models).ToList();
return result.Select(a => new CarsModel { Car = a, Models = a.Models }).ToList();
var result=UnitOfWork.GetRepository().Get().Include(a=>a.Models.ToList();
返回结果.Select(a=>newcarsmodel{Car=a,Models=a.Models}).ToList();
如果这不起作用,那么您需要更痛苦/缓慢的方式:

var cars = UnitOfWork.GetRepository<Cars>().Get().ToList();
var result = new List<CarsModel>();
foreach (var car in cars) 
{
    result.Add(new CarsModel { Cars = car, Model = UnitOfWork.GetRepository<Models>().Get(a => a.CardId == car.Id).ToList() });  // Assuming .Get() can take a filter

return result;
}
var cars=UnitOfWork.GetRepository().Get().ToList();
var result=新列表();
foreach(车辆中的var车辆)
{
result.Add(new CarsModel{Cars=car,Model=UnitOfWork.GetRepository().Get(a=>a.cardd==car.Id.ToList());//假设.Get()可以接受筛选器
返回结果;
}

公共模型{get;set;}
更改为
公共IEnumerable模型{get;set;}
。选择(entry=>new
。选择(entry=>new Model()
因为投影需要是
模型
类型。使用IEnumerable还有其他方法吗?我需要更改代码的其他部分如果您
试图返回对象列表
,并且模型当前不是集合类型,那么您必须进行下游更改。谢谢我当我选择数据时,用您的信息更新了是否需要强制转换结果
Model=m
?您几乎不需要强制转换-TemplatesAgent.Model的数据类型是什么?m的数据类型是什么(
Model
?)?
var result = UnitOfWork.GetRepository<Cars>().Get().Include(a => a.Models).ToList();
return result.Select(a => new CarsModel { Car = a, Models = a.Models }).ToList();
var cars = UnitOfWork.GetRepository<Cars>().Get().ToList();
var result = new List<CarsModel>();
foreach (var car in cars) 
{
    result.Add(new CarsModel { Cars = car, Model = UnitOfWork.GetRepository<Models>().Get(a => a.CardId == car.Id).ToList() });  // Assuming .Get() can take a filter

return result;
}