запрос, основанный на том, что связь между многими объектами - PullRequest
0 голосов
/ 30 января 2019

Я хочу запросить перевод на основе названия языка, Ниже приведена моя схема ef

 public class Noun
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<TranslationNoun> Translations { get; set; }
}
public class TranslationNoun
{
    public int Id { get; set; }
    public string Content { get; set; }
    [ForeignKey("LangungeId")]
    public Langunge Langunge { get; set; }
    public int NounId { get; set; }
    [ForeignKey("NounId")]
    public Noun Noun { get; set; }
}
public class Langunge
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Итак, вот пример данных

Язык : Id = 1,Имя = Английский

Язык : Id = 2, Имя = Franche

Язык : Id = 3, Имя = Индонезия

Существительное : id = 1, Name = "Makan";

TranslationNoun * : id = 1, Content = Eat, LanguageId = 1, NounId = 1

TranslationNoun : id = 2, Content = Le menger, LanguageId = 2, NounId = 1

TranslationNoun * : id = 3, Content = Mangan,LanguageId = 3, NounId = 1

Я хочу сосредоточиться на таблице существительных, как мне сделать запрос и показать перевод существительного на основе имени языка:

Пример Когда пользователь выберет английский язык, он вернется

Существительное 1, Makan, Eat

Когда пользователь выбирает Индонезийский язык, он возвращает

Существительное 1, Makan,Mangan

Когда пользователь выберет язык Francje, он вернется

Существительное 1, Makan, Le menger

Спасибо за ваше внимание.

1 Ответ

0 голосов
/ 30 января 2019

Вы можете попробовать, как показано ниже:

  var result =  _dbContext.TranslationNoun.Include(x => x.Noun).Include(x => x.Language)
                                    .Where(x => x.Language.Id == @langParamId)
                                    .Select(x=>new { x.Noun.Id, x.Noun.Name, x.Content});

Или Если вы хотите фильтровать по имени языка, вы можете использовать

.Where(x => x.Language.Name == "@langParamName")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...