2016-09-20 9 views
0

私は今朝この疑いがあり、答えを得ることができませんでした。私は誰かが私を助けることができるといいです2つのテーブル2つの関係ASP MVC

私は関係の両方を使用して、これらの2つのテーブルを結合し、LINQを使用して、両方のテーブルの詳細を表示する必要がある2つのテーブル(T1 & T2)

T1 
-> Id (P) 
-> InstanceId (U) 
-> ObjectId (U) 
-> Name 

T2 
-> Id (P) 
-> InstanceId (F) (Foreign key for T1.InstanceId) 
-> ObjectId (F) (Foreign key for T1.InstanceId) 
-> Grade 

を有します。

このlinqクエリを使用しましたが、このクエリからt1とt2を選択すると、両方のテーブルを返す方法がわかりません。ObjectId参照は使用されません(つまりt12)。

どうすればこの問題を解決できますか?私は両方の関係を使用する必要があり、両方のテーブル値を取得したい。

LINQ:

var result = from t1 in db.T1 
      join t2 in db.T2 on t1.InstanceId equals t2.InstanceId 
      join t12 in db.T2 on t2.ObjectId equals t12.ObjectId 
      select t1; 
+0

なしの質問に関連したようです。どのORMを使用していますか? EF?事後にエンティティに参加しようとするのではなく、マッピングに関係を追加する必要があります。 –

答えて

1

キーワードはnewです。タグの

join clause

var result = 
     from t1 in db.T1 
     join t2 in db.T2 on new { ObjectId : t1.ObjectId , InstanceId = t1.InstanceId} equals 
          new { ObjectId : t2.ObjectId , InstanceId = t2.InstanceId} 
     select new 
     { 
      t1, 
      t2 
     } 
+1

ありがとう@Neer、これは私が必要とするものです。再度、感謝します。 –

0

次のことを試してください。

var x = context.T1.Where(t => t.Id == context.T2.InstanceId) 
      .Select(x => new { 
       t, 
       t.Instance //use the related entity here) 
      }).ToList(); 

'X' は、あなたの関数内で使用できる匿名オブジェクトです。 tはT1からの変数です。これはT2に関連しています。あなたのクラスではT2からです。私はT1に対して親が必要です。そうすれば、あなたは匿名のオブジェクトでそれを使うことができます。

+0

ありがとう@RoelantM、しかし私は参加するためにInstanceIdとObjectIdの両方を使用する必要があります。私はNEERから期待される答えを得ました。再度、感謝します。 –

関連する問題