現在、多対多関連付け用の User、Roles、および User_Roles の 3 つのテーブルがあります。RoleID のリストを取得し、そのロールを持つユーザーを返す検索関数を作成したいと考えています。ただし、RoleID リストが空の場合は、すべての Users を返す必要があります。
これは私がこれまでに持っているものです..
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;
}
しかし、roleIDs が空でない場合にのみ条件付きで User_Role に参加する方法がわかりません。
私もこれを試しましたが、うまくいきませんでした。
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();
Entity Framework で条件付き結合を行うことは可能ですか?