2013-11-01 15 views
6

Tôi muốn tham gia hai thực thể trong ứng dụng MVC của tôi để xử lý dữ liệu thông qua LINQ join.LINQ Tham gia với nhiều điều kiện VÀ

Cho rằng tôi đang cố gắng để viết các truy vấn như thế nào,

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

Nhưng tôi nhận được vấn đề với truy vấn này, Vì vậy, xin vui lòng cho tôi một số gợi ý về vấn đề này.

+0

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

Trả lời

6

Hãy thử giải pháp này:

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

gì nếu điều kiện sẽ giống như điều kiện số ----------------------------------- từ liệt kê trong db. Enumerations.Where (x => x.EnumerationTypeID.Equals ("Customer.lkpStatus")) tham gia cust trong db.Customers on (enumeration.Value equals cust.lkpStatus) && cust.ID bằng dữ liệu. chọn điều tra; –

+0

Không, trong trường hợp này sử dụng giải pháp này: từ liệt kê trong db.Enumerations.Where (x => x.EnumerationTypeID.Equals ("Customer.lkpStatus")) tham gia cust trong db.Customers.Where (c => c.ID == dữ liệu) trên enumeration.Value bằng cust.lkpStatus select enumeration; – alexmac

+0

Nhưng trong trường hợp này, nó không thể tham gia Vì "enumeration.Value" là một chuỗi Trong khi "cust.lkpStatus" là một giá trị int. –

1

một này?

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

Tôi đã thử này Nhưng nó đã không làm việc –

+0

'where' hiện một tham gia bên trong và sẽ loại trừ kết quả nơi cột thứ hai là NULL. – Dan

20

Tham gia nên được thực hiện như thế này:

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

Tôi đã làm ví dụ này và có một lỗi trong "tham gia" .. nó nói Loại một trong các biểu thức trong mệnh đề nối là không chính xác. Không thể nhập suy luận trong cuộc gọi đến 'Tham gia'. Bạn có biết nó là gì không? – Diego

+0

@Diego vui lòng cho mã của bạn – IDeveloper

+0

IEnumerable mô hình = từ người dùng trong _db.Users tham gia groupMembers trong _db.GroupMembers trên mới { users.User_id } bằng mới { groupMembers.User_id } Cả hai trường hợp là loại dài – Diego

Các vấn đề liên quan