0

我使用 EntityFramework 并且需要 LINQ 查询方面的帮助。我正在构建一个将存储文章的应用程序。同一篇文章可以翻译成多种语言。所以我有2张桌子:

文章表:

ArticleId
ResourceTitleId   (FK: LocalizedContent.ResourceId)
ResourceContentId (FK: LocalizedContent.ResourceId)

本地化内容表:

ResourceId
LanguageId
Content

因此,举例来说,如果我有英文和俄文的文章,我会在 Article 表中存储一行,如下所示:

 ArticleId | ResourceTitleId | ResourceContentId |
-----------|-----------------|-------------------|
          1|               1 |                 2 |

然后,LocalizedContent 表将如下所示:

 ResourceId | LanguageId | Content |
------------|------------|---------|
           1|          1 |     aaa |
------------|------------|---------|
           1|          2 |     zzz |
------------|------------|---------|
           2|          1 |     bbb |
------------|------------|---------|
           2|          2 |     yyy |

现在的问题是:我想按语言 id 选择一篇文章(比如说英语),我希望我的结果看起来像这样:

 ArticleId | ResourceTitle | ResourceContent |
-----------|---------------|-----------------|
          1|           aaa |             bbb |

如何执行 LINQ 查询来检索我的结果,结果是一个查询?

4

1 回答 1

1

只需在两个表之间执行内部联接,通过LanguageId.

var english = 1;
var query =
    from article in dc.Articles
    join resourceTitle in dc.LocalizedContent
        on article.ResourceTitleId equals resourceTitle.ResourceId
    join resourceContent in dc.LocalizedContent
        on article.ResourceContentId equals resourceContent.ResourceId
    where resourceTitle.LanguageId == english
       && resourceContent.LanguageId == english
    select new
    {
        article.ArticleId,
        ResourceTitle = resourceTitle.Content,
        ResourceContent = resourceContent.Content,
    };
于 2012-04-22T07:31:58.997 回答