比方說,我有一個Customer
表,其中有一個PrimaryContactId
字段和一個SecondaryContactId
字段。這兩個都是引用Contact
表的外鍵。對於任何給定的客戶,可以存儲一個或兩個聯繫人。換句話說,PrimaryContactId
永遠不可能是NULL
,但是SecondaryContactId
可以是是NULL
。如何在Linq的連接中使用複合條件?
如果我放棄我的Customer
和Contact
表到「LINQ to SQL類」設計圖面,類生成器將當場從Customer
表兩個FK關係到Contact
表,並因此產生Customer
類將有一個Contact
字段和Contact1
字段(爲了避免混淆,我可以將其重命名爲PrimaryContact
和SecondaryContact
)。
現在假設我想獲取給定客戶的所有聯繫人的詳細信息。
如果總是隻有一個接觸然後我可以寫的東西,如:
from customer in customers
join contact in contacts on customer.PrimaryContactId equals contact.id
select ...
...這將被翻譯成類似:
SELECT ...
FROM Customer
INNER JOIN Contact
ON Customer.FirstSalesPersonId = Contact.id
但,因爲我想加入這兩個的聯繫人字段,我希望SQL看起來像這樣:
SELECT ...
FROM Customer
INNER JOIN Contact
ON Customer.FirstSalesPersonId = Contact.id OR Customer.SecondSalesPersonId = Contact.id
我該如何寫一個Linq表達式來做到這一點?
不是'INNER JOIN'不同的只是寫'WHERE'的方式嗎? – leppie 2010-03-15 13:50:08