2017-04-20 182 views
-1

我有三個類是這樣的:訪問使用另一個對象的對象實體框架

public class Cancellations 
{ 
    public int ID {get; set;} 
    public string CustomerID {get; set;} 
    public string CustomerName {get; set;} 
} 

public class Service 
{ 
    public int ID {get; set;} 
    public string CustomerID2 {get; set;} 
    public string ServiceName {get; set;} 
} 

public class Bill 
{ 
    public int ID {get; set;} 
    public string CustomerID3 {get; set;} 
    public string City {get; set;} 
} 

沒有在這些數據庫這樣的關係:Service.ID=Cancellations.CustomerIDBill.CustomerID3 = Service.CustomerID2。 我想要實現的是,如何在Cancellations對象中有CustomerID時獲得正確的城市。你能給我提示嗎?謝謝。

+1

你有沒有嘗試過什麼?......看看'Join',然後寫linq查詢。此外,我建議看導航屬性 - 所以你將有一個更簡單的生活加入 –

+0

@GiladGreen這些配置沒有導航屬性。我覺得我應該使用連接,但我無法弄清楚如何。謝謝。 – jason

+1

然後請顯示你已經嘗試過的東西..你是4年的成員......你知道它是如何工作:) –

回答

1

只是一個簡單的連接:

var result = (from c in db.Cancellations 
       join s in db.Service on c.CustomerID equals s.ID 
       join b in db.Bill on s.CustomerID2 equals b.CustomerID3 
       select new { c.Id, c.CustomerName, b.City }).ToList(); 

2點建議:

  1. 重命名你的屬性/類 - 感覺他們沒有意義
  2. 查找導航Propertires
1

假設你在客戶則:

用C#和LINQ

using System.Linq; 

-- 

// Suppose this is your cancellation object's CustomerID 
int _customerID = 123; 

-- 

var resultObj = from billObj in Bills 
      join serviceObj in Service on Service.CustomerID2 equals billObj.CustomerID3 
      join cancellationObj in Cancellation on Cancellation.CustomerID equals serviceObj.ID 
      where CancellationObj.CustomerID == _customerID 
      select new { Bills = billObj }; 

-- 

String City = resultObj.Select(x => x.City).FirstOrDefault(); 

我建議你給你的對象更有意義的名稱,如果可能的。