2012-01-13 17 views
5

Tôi có một câu hỏi nhanh chóng bởi vì bộ não của tôi sẽ không làm việc với tôi ...
ở đâu để tôi xác định rằng tôi muốn của user_id trong 'Người dùng' mà không phải là trong 'Nhóm'?Làm cách nào để chỉ định "không có" trong biểu thức lambda này?

db.Users.Join(db.Groups, a => a.user_id, b => b.user_id, (a, b) => new SelectListItem 
{ 
    Value = a.user_id.ToString(), 
    Text = a.surname + " " + a.lastname 
}); 
+0

Cấu trúc cơ sở dữ liệu trông như thế nào? (hoặc có thuộc tính Groups được tạo trong Người dùng?) –

+0

Mỗi Nhóm phải có Người dùng, nhưng tôi muốn Người dùng không có trong bảng Nhóm. – Niklas

Trả lời

11

Sau đây nên làm việc (giả định rằng tôi đã hiểu câu hỏi của bạn một cách chính xác):

db.Users 
.Where(x => !db.Groups.Any(y => y.user_id == x.user_id)) 
.Select(a => new SelectListItem 
    { 
     Value = a.user_id.ToString(), 
     Text = a.surname + " " + a.lastname 
    }); 
+0

Phát hiện, cảm ơn! – Niklas

+0

Thực sự hữu ích! Cảm ơn. – Deepal

0

bạn có thể thử một cái gì đó như thế này:

var query = from u in db.Users 
      where !(from g in dc.Groups 
        select g.user_id) 
        .Contains(u.user_id) 
      select new SelectListItem { 
         Value = u.user_id.ToString(), 
        Text = u.surname + " " + u.lastname 
     }; 

Hãy xem ở đây: http://introducinglinq.com/blogs/marcorusso/archive/2008/01/14/the-not-in-clause-in-linq-to-sql.aspx

+0

Cảm ơn, tôi chắc chắn điều này sẽ làm việc nhưng tôi cần nó trong lambda =) – Niklas

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