@Denioo

Как объединить запросы в Nhibernate?

Здравствуйте, не подскажите как в Nhibernate на шарпе объединить 2 зароса в один. Есть запросы вот:
if (_queryParams.RoleId != null && _queryParams.BranchId == null)
			{
				var existsRolesInBranchQuery = QueryOver.Of<UserRoleMember>()
				 .Where(x => x.AppRole.Id == _queryParams.RoleId)
				 .Where(x => x.User.Id == userAlias.Id)
				 .Select(x => 1);
				filteredUsers = filteredUsers.WithSubquery.WhereExists(existsRolesInBranchQuery);
				
			}

			if (_queryParams.RoleId != null && _queryParams.BranchId != null)
			{
				var existsRolesAndInBranchQuery = QueryOver.Of<UserRoleMember>()
					.Where(x => x.AppRole.Id == _queryParams.RoleId)
					.Where(x => x.User.Id == userAlias.Id)
					.Where(x => x.Branch.Id == _queryParams.BranchId)
					.Select(x => 1);
				filteredUsers = filteredUsers.WithSubquery.WhereExists(existsRolesAndInBranchQuery);
			}


У них различия одной строке ну и в условие, во втором есть:
.Where(x => x.Branch.Id == _queryParams.BranchId)

Как можно объединить эти 2 запроса сохранив условие, а то много кода некрасивого получается? Nhibertane начал изучать недавно и поэтому еще не понимаю многого. Заранее благодарю.
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
@asdz
Что-то типа этого (ваши ветвления мне не совсем понятны, поэтому возможно вам придется скорректировать мой пример):
var query = QueryOver.Of<UserRoleMember>()
    .Where(x => x.User.Id == userAlias.Id);

if (_queryParams.RoleId != null)
{
    query = query
        .Where(x => x.AppRole.Id == _queryParams.RoleId)
}

if (_queryParams.BranchId != null)
{
    query = query
        .Where(x => x.Branch.Id == _queryParams.BranchId)
}

var result = query.Select(x => 1);
filteredUsers = filteredUsers.WithSubquery.WhereExists(result);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы