2016-04-11 11 views
0

linqを使って次のようなSQL文を書く方法はありますか?c#linq join on two columns

select * from contacts 
inner join messages on contacts.contactnumber = messages.[to] or contacts.contactnumber = messages.[from] 

2つの列を結合する必要がありますが、どちらの列でも値を一致させることができます。両方で一致することはありません。私は両方の列に参加する方法を見つけましたが、 "または"ではありません。

次の例では、私がここに望んでいたものではない場合にのみ、両方の列に動作します:

var contact = (from c in db.Contacts 
          join m in db.message on new { A= c.ContactNumber, B = c.ContactNumber} equals new {A = m.to , B = [email protected] } 
          where m.id !=null 
          select(c)); 

      return contact ; 

答えて

1

代わりに2つのfrom Sを使用してみてください:

var contact = (from c in db.Contacts 
       from m in db.message 
       where c.contactnumber == m.to || 
       c.contactnumber == m.from 
       select c); 
return contact ;