С# ASP.NET MVC: как получить список элементов по столбцу id, возвращенному из списка в Entity Framework

Мне нужно создать 2 списка, и я ищу передовой опыт и, в конечном итоге, однострочный синтаксис!

Я использую Entity Framework, и у меня есть 3 таблицы:

public class Position 
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public class Training 
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Association 
{
    public int Id { get; set; }
    public Impact Impact { get; set; }

    public int TrainingId { get; set; }
    public virtual Training Training { get; set; }
    public int PositionId { get; set; }
    public virtual Position Position { get; set; }
}

public enum Impact 
{
    Optional,
    Mandatory
}

Я должен выбрать все тренировки, которые упомянуты в таблице Association как обязательные или необязательные (я имею в виду, что столбец Impact должен быть заполнен Impact.Optional), а PositionId — это тот, который я даю через параметр или что-то в этом роде!

Как я могу это сделать?

что ты уже испробовал?

Matt 02.07.2019 13:06

Это то, что тебе надо? var result = db.Asociation.Where(x => x.Impact == Impact.YOUR_IMPACT && PositionId == YOUR_ID);

Matt 02.07.2019 13:11

@Мэтт, почти да, и с этим, как я могу получить коллекцию тренировок! Ваш синтаксис фильтрует правильные «ассоциации», и я хочу использовать TrainingId, чтобы взять список тренировок!

Adrian Panaintescu 02.07.2019 13:22

Проверьте мой ответ ниже и попробуйте еще раз

Matt 02.07.2019 13:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
1 075
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуй это

public List<Training> GetOptionalTrainings(int positionId)
{
  _context.Associations
    .Where(a => a.Impact == Impact.Optional && a.PositionId == positionId)
    .Select(a => a.Training)
    .ToList();
}

обратите внимание, что ваши отношения 1-1, ассоциация всегда будет иметь обучение, если вам нужно отношение 0 или 1, вы можете изменить public int TrainingId на public int? TrainingId

обновлен

Другие вопросы по теме