基于languange一对多关系实体framewok的查询

时间:2019-01-30 06:53:05

标签: c# entity-framework

我想根据语言名称查询翻译,以下是我的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,名称=“ Makan”;

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

TranslationNoun :id = 2,Content = Lemenger,LanguageId = 2,NounId = 1

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

我想关注名词表,如何查询和显示基于Languange名称的名词翻译:

示例当用户选择英语时,它将返回

名词 1,吃饱,吃完饭

当用户选择印尼语时,它将返回

名词 1,马坎语,曼干语

当用户选择Francje语言时,它将返回

名词 1,马坎,勒芒格

感谢您的关注。

1 个答案:

答案 0 :(得分:0)

您可以尝试如下操作:

  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")