Lambda 表达式返回两个外键的值并将它们传递给视图 (MVC)

Lambda expression returning values for two foreign keys and passing them to view (MVC)

我有两个表:

Language (
    int LangId,
    string LangName
)

Dictionary (
    int DictId,
    string DictName,
    int LangFromFK,
    int LangToFK
)

我想要 return 名称以 'a' 开头的词典(这很简单)但是我想要的不是外键的 int 值而是适当语言的名称。我想发送这样的列表以供查看- view 我应该有什么样的 @model

我该怎么做?

你想做的事是可能的。外键通常与另一个 table 的主键关联。通常主键是一个自动递增的 int 列。但是,只要具有唯一约束,外键就可以链接到任何列。

A foreign key constraint does not have to be linked only to a primary key constraint in another table; it can also be defined to reference the columns of a UNIQUE constraint in another table.

引用自Create Foreign Key Relationships - MSDN

因此,为了在 LangName 上放置外键,您必须在数据库中的该列上应用唯一约束。为此,最佳答案将来自 .NET 文档。 DataColumn.Unique Property 是一个很好的起点。

这是你想要的吗?

var query =
    from d in dictionaries
    where d.DictName.StartsWith("a")
    join fl in languages on d.LangFromFK equals fl.LangId
    join tl in languages on d.LangToFK equals tl.LangId
    select new
    {
        d.DictId,
        d.DictName,
        LangFrom = fl.LangName,
        LangTo = tl.LangName,
    };