2017-08-07 11 views
0

私のデータベースは、まずコードを使用して作成されます。私のクライアントのためのモデルはここにあります。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; } 

各クライアントは、複数の訪問を持っています。 最後に訪問してモデルに追加するにはどうすればよいですか?

ここで私が改善したいと思っているリキッドリキードです。

 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を持っています。 私は最後の訪問を得て、この訪問以来の日数を得るための計算をする必要があると思いますか?すべての

答えて

0

まず:

クライアントが複数の訪問を持っている場合、あなたのクライアントエンティティへ

public virtual ICollection<Visit> Visits { get; set; } 

を追加して良いでしょう、あなたは簡単にクライアントにリンクされているすべての訪問にアクセスすることができます。

それから、このようなコードを使って「DaySinceLastVisit」を計算するのは簡単です:

public int DaySinceLastVisit => (DateTime.Now - Visits.OrderByDescending(v => v.DateOfTheVisit).FirstOrDefault().DateOfTheVisit).Days; 
+1

このソリューションは動作しますが、お時間のためのおかげで、私は偉大な、今日は新しいことを学びました! – ParkPark

関連する問題