現在我有3個表:User,Roles和User_Roles用於多對多關聯。我想創建一個搜索函數,它接收一個RoleID列表並返回具有該角色的用戶。但是如果RoleID列表爲空,則應返回所有用戶。實體框架多對多條件連接
這是我迄今爲止..
public static List<User> SearchUser(List<int> roleIDs)
{
List<User> userList = new List<User>();
using (var db = new DBContext())
{
var users = (
from u in db.Users
join ur in db.User_Role
on u.UserID equals ur.UserID
join r in roleIDs
on ur.RoleID equals r
select u
).Distinct().ToList();
}
return userList;
}
,但我不能想出一個辦法來有條件地加入到USER_ROLE只有當roleIDs不爲空。
我也試過這個,但它沒有工作。
var users = (from u in db.Users
from r in roleIDs
join ur in db.User_Role
on u.UserID equals ur.UserID
where roleIDs.Count == 0 || ur.RoleID == r
select u
).Distinct().ToList();
是否有可能在實體框架中有條件連接?
謝謝Eranga。如果使用if語句,但實際上,該函數將能夠採用多個列表參數來進一步過濾搜索。使用空列表和非空列表的所有組合,使用if語句將快速變得雜亂無章。這就是爲什麼我認爲有條件的連接將是最優雅的方式。 – nthpixel
我從技術上說明了你的回答是答案,因爲如果陳述是順其自然的話。我只是改變了邏輯。看到我發佈的回覆。 – nthpixel