使用 Linq 从其他 table 获取特定信息

Get a specific info from an other table with 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; }

每个客户都有多次访问。 如何获取上次访问并将其添加到我的模型中?

这是我想要改进的请求 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;