【发布时间】:2017-07-02 03:16:05
【问题描述】:
我正在努力理解 LINQ 语法以及如何将它与数据库中的多对多关系一起使用。在我的示例项目中,我正在对汽车进行建模,并且您可以对汽车进行维护。所以我有 3 张桌子:
- 汽车(用户添加的汽车信息)
- 服务(仅供参考)
- CarServices(存储在汽车上完成的服务)
在网站上,我显示了来自所有 3 个表的信息,因此我创建了一个视图模型 CarsIndexViewModel 来保存汽车及其关联的 CarServices。
public class Car
{
public int Id { get; set; }
[Required]
[StringLength(40)]
public string Name { get; set; }
[Required]
[Range(1900, 2018)]
public int Year { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public string Color { get; set; }
public int Mileage { get; set; }
public virtual ICollection<CarService> CarServices { get; set; }
}
public class Service
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<CarService> CarServices { get; set; }
}
public class CarService
{
public int Id { get; set; }
public int CarId { get; set; }
[Required]
[Display(Name = "Service")]
public int ServiceId { get; set; }
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
[Display(Name = "Date of Service")]
public DateTime ServiceDate { get; set; }
[Column(TypeName = "Money")]
public decimal? Cost { get; set; }
public bool HasReceipt { get; set; }
[Required]
[Display(Name = "Mileage At Time of Service")]
public int Mileage { get; set; }
public virtual Car Car { get; set; }
public virtual Service Service { get; set; }
}
和视图模型:
public class CarsIndexViewModel
{
public Car Car { get; set; }
public IEnumerable<CarService> Services { get; set; }
}
通过在我的控制器中使用此代码,我已经能够返回所有服务及其信息:
var query = (
from car in _context.Cars
select new CarsIndexViewModel()
{
Car = car,
Services = car.CarServices
}).ToList();
return View(query);
我不知道如何只返回满足特定条件的 CarServices。例如,如果我只想显示最近日期的 CarServices 怎么办?
【问题讨论】:
标签: c# asp.net-mvc linq