2010-08-16 40 views
3

書面查詢我剛開始實體框架& LINQ和寫這個查詢實體框架 - 使用lambda表達式

var query = from rp in db.UM_RolePermission 
      where (from ru in db.UM_RoleUser 
      where ru.UM_User.UserID == userId select ru.RoleID).Contains(rp.RoleId) 
      select rp; 

上述工作正常和fullfill我的需要,但是我想寫這同使用lambda表達式也瞭解這一點。

我已經試過自己寫這個,但我無法完成它。

var query1 = db.UM_RolePermission 
      .Where(rp => (from ru in db.UM_RoleUser where ru.UM_User.UserID == userId select ru.RoleID).Contains(rp.RoleId)); 

任何人都可以填寫嗎?

關係:

UM_RoleUser and UM_User 

感謝

回答

2
var query = db.UM_RolePermission 
      .Where(rp => db.UM_RoleUser 
         .Where(ru => ru.UM_User.UserID == userId) 
         .Select(ru => ru.RoleID) 
         .Contains(rp.RoleId)) 
+0

精心挑選,謝謝 – 2010-08-17 05:04:02

1

我要跳進取,假設你已經在許多一對多的關係定義RolePermission和RoleUser之間的關係?這會讓你的生活變得更簡單。

var query1 = db.UM_RoleUser 
    .Where(ru => ru.UserId == userID) 
    .SelectMany(rp => rp.RolePermissions); 

當然,這取決於你如何建立你的關係。

+0

它不正確,請先了解我的第一個查詢 – 2010-08-16 12:04:42

+0

有黑/白RolePermission&RoleUser – 2010-08-16 12:09:27

+2

何不做一個沒有關係?根據你告訴我的情況,這聽起來像是一種自然的關係。 – 2010-08-16 12:28:16

相關問題