2013-11-01 60 views
6

我想在我的MVC應用程序中加入兩個實體,以通過LINQ連接進行數據處理。LINQ加入多個AND條件

對於我想寫查詢一樣,

from enumeration in db.Enumerations 
join cust in db.Customers on (enumeration.Value equals cust.lkpStatus &&  
enumeration.EnumerationTypeID.Contains('Cust') 

但我得到的問題與此查詢,所以,請給我一些這方面的建議。

+0

http://stackoverflow.com/questions/3020442/linq-joining-in-c-sharp-with-multiple-conditions –

回答

6

嘗試這種解決方案:

from enumeration in db.Enumerations.Where(e => 
              e.EnumerationTypeID.Contains('Cust')) 
join cust in db.Customers on enumeration.Value equals cust.lkpStatus 
select enumeration; 
+0

如果什麼該條件將類似於 ----------------------------------- 來自db中的枚舉。 Enumerations.Where(x => x.EnumerationTypeID.Equals(「Customer.lkpStatus」)) 將cust關聯到db​​.Customers(enumeration.Value等於cust.lkpStatus)&& cust.ID等於data。 select enumeration; –

+0

不,在這種情況下使用此解決方案:從db.Enumerations.Where(x => x.EnumerationTypeID.Equals(「Customer.lkpStatus」))中的枚舉中加入db.Customers.Where(c => c.ID ==數據)在枚舉。值等於cust.lkpStatus選擇枚舉; – alexmac

+0

但在這種情況下,它無法進行連接因爲「enumeration.Value」是一個字符串而「cust.lkpStatus」是一個int值。 –

1

這一個?

var data =  from c in db.Enumerations 
       from d in db.Customers 
       where c.Value.Equals(d.lkpStatus) 
       && c.EnumerationTypeID.Contains('Cust') 
       select c; 
+0

我試過這一個但它不起作用 –

+0

'哪裏'做一個內部連接,並且將排除第二列爲NULL的結果。 – Dan

20

加入應作出這樣的:

var joinQuery = 
from t1 in Table1 
join t2 in Table2 
    on new { t1.Column1, t1.Column2 } equals new { t2.Column1, t2.Column2 } 
... 
+1

我做了這個例子,並且在「join」中有一個錯誤。它說join子句中的一個表達式的類型不正確。在「加入」的調用中,類型推斷失敗。你知道它是什麼嗎? – Diego

+0

@Diego請出示你的代碼 – IDeveloper

+0

的IEnumerable 模型= 從用戶_db.Users 在_db.GroupMembers上加入groupMembers 新 { users.User_id } 等於 新 { groupMembers.User_id } 這兩種情況都是長類型 – Diego