0

asp.net と c# を使用して多言語ニュース ポータル Web サイトを開発しています。現在、このサイトは 2 つの言語をサポートしており、必要に応じて他の言語に拡張される予定です。そのため、サイトの基本的なフレームワークを作成するのが私の仕事です。クライアントの要件に基づいて、異なる言語の Web サイトのデータベースに格納されるコンテンツは異なる場合があります。そのため、ニュースをさまざまな言語 (tblNews_EN、tblNews_am など) で保存して、英語またはアムハラ語のコンテンツを保存するためのさまざまなテーブルを作成しました。

これで、最新のニュースを取得するためのクラスができましたが、これらのクラスを一般化して、ユーザーが要求している特定のカルチャの最新のニュースを取得したいと考えています。最初は、tblNews_EN テーブルから最新のニュースを取得するためにのみ機能する次のようなものがあります。

public IQueryable<GetNews> GetTopExtraNews()
 {

        var topExtraNews = from p in db.GetNews
                           where p.TopOrderPriority == 2
                           orderby p.NewsDate descending
                           select p;
        return topExtraNews;
}

ここで、GetNews は、tblNews_EN テーブルに対応するエンティティ クラスです。

ここで、選択したカルチャに応じて異なるテーブルからオブジェクトを返すように、これを一般化したいと考えています。IQueryable のようなものを使用しようとしましたが、これが私のケースに対処するための最良のオプションだとは思いません。それで、これを行うためのより良いオプションはありますか?

4

1 に答える 1

0

私がよく理解していれば、あなたのテーブルはすべて同じ構造を持っています。

それに基づいて、テーブルをパラメーターとしてメソッドに送信し、このパラメーターをクエリに使用します。

public IQueryable<GetNews> GetTopExtraNews(typeofYourTable myTable)
{

        var topExtraNews = from p in myTable
                           where p.TopOrderPriority == 2
                           orderby p.NewsDate descending
                           select p;
        return topExtraNews;
}

もちろん、メソッドを呼び出す前に、myTable パラメータを正しい言語テーブルに設定する必要があります。

于 2012-04-29T06:05:20.837 に答える