2017-04-20 2 views
-1

に別のオブジェクトを使用してオブジェクトへのアクセス私はこのような3つのクラスがありますEntity Frameworkの

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。 私が達成しようとしているのは、CustomerIDがCancellationsオブジェクトにあるときに、正しい都市を取得する方法です。それについてのヒントを教えてもらえますか?ありがとう。

+1

見上げてほとんど意味を作る感じ試したことがありますか?... 'Join'sを見て、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(); 

私は可能であれば、あなたのオブジェクトにもっと意味のある名前を与えることを示唆しています。