質問

ニュースポータルがあります。

このポータルには、「ニュース」というデータベースがあります。表と次の列 (NewsID、CategoryID、NewsTitle、NewsText、DateAdded、ImagePath、TotalRead、NewsType、isActive)

データセットファイル(.xsd)を使用します。このファイルには、過去3日間のニュースを、HHNewsという名前のコーディングしたカスタムクラスに返すクエリがあります。

HHNewsクラスには、上記のクエリの結果を含む厳密に型指定されたデータテーブルを返す関数があります。

ホームページにはニュース用のさまざまなセクションがあります。これらは次のとおりです。 -見出し(5アイテム) -小見出し(4アイテム) -各ニュースカテゴリの最後の5つのニュースアイテム...(カテゴリは、スポーツ、ローカルニュース、経済学など、

ホームページでは、クラスから返されたデータテーブルを取得します。ここで、このデータテーブルを照会し、上記のセクションを作成します。例:

私のデータテーブルが「dt」と呼ばれる場合、「select TOP(5)NewsID、NewsTitle、NewsType = 0」のNewsTextなど、このdtをsqlのようにクエリする方法があります。 -見出しを表す0?

役に立ちましたか?

解決

もちろんです。 Dave Cluderayが述べたように、 LINQを使用できます。たとえば、見出しを取得するには、次を実行できます。

var myDataTable = dt.AsEnumerable();
var headlines = myDataTable.Where(t => t.NewsID == 0).Take(5);

他のヒント

LINQ to DataSet を使用できます.NET 3.5。

.NET 3.5を使用していない場合は、DataTableオブジェクトに基づいてDataViewを作成し、DataViewでRowFilterプロパティを設定できます。例:

DataView myDV = new DataView(dt);
myDV.RowFilter = "NewsType = 0";

その後、DataViewの最初の5行のみをキャッチできます。

デフォルトビューを使用して、データテーブルを次のようにフィルタリングできます。

dt.DefaultView.RowFilter =" NewsType = 0&quot ;;

トップ5の獲得方法がわからない!?

3.5以外の場合は、単純なforループを使用して、テーブルをソートした後に上位5行を取得できます。

DatatableにはSelectメソッドがありますが、返される量を制限する方法があるとは思わないでください。私はLINQの方法が好きですが、ただの代替手段....しかし、制限はこれを除外するかもしれません。

dt.Select("NewsType = 0");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top