#c# #lambda
#c# #лямбда
Вопрос:
У меня есть таблица объединения пользовательских задач — с помощью служб ria я захожу и получаю usertaskjoin на основе идентификатора пользователя.
UserTaskQueueJoin = new ObservableCollection<UserTaskQueueJoin>( _context.UserTaskQueueJoins);
как только я получу этот объект UserTaskJoin, я хочу затем получить задачи из запроса, который я запускаю.
_query = _query.Where(x => UserTaskQueueJoin.Any(t => t.UserTaskQueueJoinID == x.AssignedToTaskQueueID));
UserTaskQueueJoin — UserTaskQueueJoinID, идентификатор пользователя, TaskQueueID
TaskQueue — TaskQueueID, InstitutionId, TaskQueueName
Task — идентификатор задачи, TaskQueueID, TaskName
Что я в конечном итоге делаю, так это запускаю запрос к таблице задач, чтобы возвращать только элементы, которые находятся в очереди задач. мой первый фрагмент кода выше получает очереди задач, в которых находится пользователь..
Приведенный выше запрос явно не работает. Я пробовал с a .Выбираем Many и не можем заставить это работать.
Комментарии:
1. Я не совсем понимаю структуру вашего объекта. У вашего пользовательского объекта есть TaskId, а у вашего объекта task есть TaskId? Я бы подумал, что ваш объект task должен иметь идентификатор пользователя, чтобы установить это отношение «один ко многим». (у одного пользователя много задач)?
2. Итак, по сути, у вас есть
Users
объект иTasks
object и вы хотите объединить их вместе на основе идентификатора задачи, верно?3. Знаете, может помочь краткое описание классов User и Task.
4. извините за путаницу. Я обновил вопрос, и он стал немного более понятным .. надеюсь?
5. Я использую этот запрос и отправляю его обратно в службу моего домена. У меня есть различные проверки, которые я добавляю к этому запросу. даты, активен, назначен мне … после того, как я создаю этот длинный запрос, я затем отправляю его обратно в свой вызов службы ria, и он выполняется.
Ответ №1:
Если ваша модель содержит все соответствующие отношения типа FK, это может быть так просто, как :
_query = _query.SelectMany(x => x.UserTaskQueueJoins.TaskQueues.Tasks);
или даже
_query = _query.SelectMany(x => x.TaskQueues.Tasks);