2012-04-29 13 views
0

asp.netとc#を使用して多言語ニュースポータルサイトを開発しています。現在、サイトは2つの言語をサポートしており、必要に応じて他の言語にも拡張されます。サイトの基本的な枠組みを作るのは私の仕事です。クライアントの要件に基づいて、異なる言語のウェブサイトのデータベースに格納されるコンテンツが異なる場合があります。だから、英語やアムハリ語のコンテンツを保存するために、ニュースをさまざまな言語(tblNews_EN、tblNews_amなど)で保存するためのテーブルを作成しました。動的タイプをIQueryableに作成する<T>実行時に#

最新のニュースを取得するクラスがありますが、それらのクラスを一般化し、ユーザーが要求している特定のカルチャの最新ニュースを取得したいと考えています。当初、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テーブルに対応するEntityクラスです。

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

+0

なぜOrchard CMSのように、すでにこれを行うツールを使用していませんか? –

答えて

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パラメータを設定する必要があります。

+0

はい、テーブルの構造は似ています。しかし、typeofYourTable型の使い方が分かりません。あなたは私にそれを使う方法の例をいくつか教えてもらえますか? – semytech

+0

@semytech私はあなたのテーブル、例えばDataTableを参照するあなたのクラスの本当の型を置くことを意味しました。あなたのdb.GetNewsは何らかの種類のものです。この型は、メソッドが受け入れるパラメータの種類を定義するためにそこに配置する必要があります。 – Dummy01

+0

私は今理解していますが、IQueryableのとdb.GetNewsは1つのテーブルに固有のものです。私はそれらを一般化して、この関数を呼び出すときにdb.GetNews_ENなどの異なる型を渡さなければならないようにしたいと思います。現在実行しようとしているコードを与えますが、実行時にさまざまな型を渡す方法はまだ分かりません。 – semytech

関連する問題