Возникла задача в Select сравнивать ID с коллекцией.
Коллекция находится другим запросом Select. Сейчас выглядит все так-то так:
var userConnection = Get<UserConnection>("UserConnection"); var group = Get<string>("GroupID"); var selectID = ((Select)Select(userConnection) .Column("SysAdminUnitId") .From("SysAdminUnitInRole") .Where("SysAdminUnitRoleId").IsEqual(Column.Const(group))).ExecuteScalar<string>(); var select = ((Select)(new Select(userConnection) .Column(Func.Count("Id")) .From("SysUserInRole") .Where("SysRoleId").IsEqual(Column.Parameter(new Guid("3DAFC997-65E9-47E4-9434-F036077D66F4"))) .And("SysUserId").In((selectID)))).ExecuteScalar<int>(); Set("BossInGroup", select); return true;
И если у меня 1 параметр, все отрабатывает как задумано. Стоит вопрос - как переделать первый Select и добавить его во второй?
Буду признателен за помощь.
Нравится
2 комментария
26 октября 2018 11:11
Вот так (без ExecuteScalar во внутреннем Select):
new Delete(UserConnection).From("ActivityParticipant") .Where("ParticipantId").IsEqual(Column.Parameter(Entity.ParticipantId)) .And("Id").IsNotEqual(Column.Parameter(Entity.Id)) .And("ActivityId").In( new Select(UserConnection) .Column("ActivityId") .From("ActivityParticipant") .Where("ParticipantId").IsEqual(Column.Parameter(Entity.ParticipantId))) .Execute(dbExecutor);
26 октября 2018 11:53
var userConnection = Get<UserConnection>("UserConnection"); var group = Get<string>("GroupID"); var select = ((Select)(new Select(userConnection) .Column(Func.Count("Id")) .From("SysUserInRole") .Where("SysRoleId").IsEqual(Column.Parameter(new Guid("3DAFC997-65E9-47E4-9434-F036077D66F4"))) .And("SysUserId").In(new Select(userConnection) .Column("SysAdminUnitId") .From("SysAdminUnitInRole") .Where("SysAdminUnitRoleId").IsEqual(Column.Const(group))))).ExecuteScalar<int>(); Set("BossInGroup", select); return true;
Спасибо, все получилось.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать