2016-12-21 10 views
3

私はtable1のオブジェクトを選択するIDで始まり、そのオブジェクトから2つの新しいIDを取り出して使用するステートメントを作成しようとしていますtable2の2つの異なるオブジェクトを検索します。
私の目標は、table1のオブジェクトとtable2の2つのオブジェクト、つまり(table1.object, table2.object1, table2.object2)を持つ匿名オブジェクトで終わることです。Linq、2つの異なるIDに基づいて1つのテーブルから2つのレコードを選択

これが単一のステートメントで実行できるかどうかはわかりません。 table2.object2

は、これまでのところ、私はこれを得たが、それは私だけtable1.objectと​​を与え、そしてません:

db.Person.Where(x => x.Id == myId) 
     .SelectMany(p => db.OtherPerson 
     .Where(o=> p.OhterP1_Id1 == o.Id).DefaultIfEmpty(), 
     (p, o) => new {pers = p, otherP = o}) 
+0

つ以上のオブジェクトがあった場合はどうtable1のオブジェクトのtable2にありますか?またはただ一つ? – vojta

+0

テーブル2のオブジェクトはtable1のオブジェクトに対して2つしかないことがありますが、Idはユニークです –

+0

だからオブジェクトには「OhterP1_Id1」と「OhterP1_Id2」がありますか? – vojta

答えて

3

これは何をしたいです:

var result = db.Person.Where(x => x.Id == myId) 
.Select(p => new { 
pers = p, 
otherP1 = db.OtherPerson.SingleOrDefault(o => p.OhterP1_Id1 == o.Id), 
otherP2 = db.OtherPerson.SingleOrDefault(o => p.OhterP1_Id2 == o.Id) 
}).SingleOrDefault(); 
+0

Sweet、thx alot。 –

+0

「FirstOrDefault()」に変更するだけです。 –

+0

@ user7324523 'FirstOrDefault()は、そのようなオブジェクトが複数存在し、いずれかを使用していることを意味します。 'FirstOrDefault()'はあなたが望むものですか? – vojta

関連する問題