Вопрос

Использование коллекции в Select

Возникла задача в 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 комментария

Вот так (без 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);

 

var userConnection = Get&lt;UserConnection&gt;("UserConnection");
var group = Get&lt;string&gt;("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&lt;int&gt;();
 
Set("BossInGroup", select);  
 
return true;

Спасибо, все получилось.

Показать все комментарии