У меня есть три таблицы для многих отношений. Я присоединился к трем таблицам и выбираю значение, которое я хочу, но теперь мне нужно выбрать одну строку из результата запроса, где, указав идентификатор, это моя третья таблица
И это запрос с использованием выражения LINQ
lambda:
DataBaseContext db = new DataBaseContext();
public ActionResult Index()
{
var UserInRole = db.UserProfiles.
Join(db.UsersInRoles, u => u.UserId, uir => uir.UserId,
(u, uir) => new { u, uir }).
Join(db.Roles, r => r.uir.RoleId, ro => ro.RoleId, (r, ro) => new { r, ro })
.Select(m => new AddUserToRole
{
UserName = m.r.u.UserName,
RoleName = m.ro.RoleName
});
return View(UserInRole.ToList());
}
результат будет таким, как с помощью sql
query
sql
запрос
select *
from UserProfile u join webpages_UsersInRoles uir on u.UserId = uir.UserId
join webpages_Roles r on uir.RoleId = r.RoleId
результат запроса sql
теперь я использую запрос anther sql
, чтобы отфильтровать результат запроса sql
по запросу и установить условие where u.UserId = 1
, чтобы дать мне обратно пользователя с идентификатором 1, подобным этому
select *
from UserProfile u join webpages_UsersInRoles uir on u.UserId = uir.UserId
join webpages_Roles r on uir.RoleId = r.RoleId
where u.UserId = 1
и результат этого sql
запроса
так как я могу добавить where clause
в мое lambda-выражение, чтобы дать мне тот же результат, что и результат запроса sql
, и спасибо за любую помощь