从Linq的其他表中获取具体信息
问题描述:
我的数据库是使用代码优先创建的。这是我的客户的模型。从Linq的其他表中获取具体信息
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Display(Name = "Phone number")]
public int PhoneNumber { get; set; }
[Display(Name = "Email adress")]
[EmailAddress]
public string EmailAdress { get; set; }
[Display(Name = "Date of the wedding")]
public DateTime DateOfTheWedding { get; set; }
[Display(Name = "Type of client")]
public TypeOfClient TypeOfClient { get; set; }
[NotMapped]
public int DaySinceLastVisit { get; set; }
我也有一个模型访问:
public int Id { get; set; }
public Client Client { get; set; }
[Required]
[ForeignKey("Client")]
public int ClientId { get; set; }
[Display(Name = "Date of the visit")]
public DateTime DateOfTheVisit { get; set; }
public String Comment { get; set; }
每个客户端有多个访问。 如何获取上次访问并将其添加到我的模型中?
这是我想要改进的resquest linq。
var clientsQueryable = _context.Clients
.Include(c => c.TypeOfClient);
if (!String.IsNullOrWhiteSpace(query))
clientsQueryable.Where(client => client.FirstName.Contains(query));
var listClients = clientsQueryable
.ToList()
.Select(Mapper.Map<Client, ClientDto>);
return Ok(listClients);
我想在客户端的信息DaySinceLastVisit。 我认为我们需要进行最后一次访问并计算一下自此次访问以来经过的日子。
答
首先:
如果客户有多个访问,这将是很好添加
public virtual ICollection<Visit> Visits { get; set; }
到客户端实体,因此您可以轻松地访问连接到客户端的所有访问。
然后很容易计算出“DaySinceLastVisit”使用类似的这样的代码:
public int DaySinceLastVisit => (DateTime.Now - Visits.OrderByDescending(v => v.DateOfTheVisit).FirstOrDefault().DateOfTheVisit).Days;
此解决方案,感谢您的时间,我学到新的东西今天,伟大的! – ParkPark