Просмотрите виртуальные темы и явно включите тему в сетевой соединитель, а также исключите очереди VirtualConsumer из сетевого соединителя. Это сохраняет подписки локальными, но создает сообщения для всех узлов.
ref: Виртуальные темы
Вы могли попробовать:
var yIds = from y in dataContext.Y
where ...
select y.XId;
var query = from x in dataContext.X
where yIds.Contains(x.Id)
select x;
Я не знаю, будет ли это работать, хотя - какая-либо причина, почему Вы не хотите просто делать соединение вместо этого? Например:
var query = from x in dataContext.X
join y in dataContext.Y.Where(...) on x.Id equals y.Xid
select x;
Чтобы сделать В в sql, необходимо использовать, Содержит функцию в Linq.
Так, например:
var query = from x in GetX()
where (from y in GetY() select y.xID).Contains(x.xID)
select x;
Вы могли также определить внутренний запрос linq отдельно, если Вам нравится, который более читаем