0

EntityFrameworkを使用しており、LINQクエリのサポートが必要です。記事を保存するアプリケーションを作成しています。同じ記事を多くの言語に翻訳することができます。だから私は2つのテーブルを持っています:

記事の表:

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

LocalizedContentテーブル:

ResourceId
LanguageId
Content

したがって、例として、英語とロシア語の記事がある場合、Articleテーブルに次のような1つの行を格納します。

 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 |

1つのクエリで結果を取得するLINQクエリを実行するにはどうすればよいですか?

4

1 に答える 1

1

でフィルタリングする2つのテーブル間で内部結合を実行するだけ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 に答える