1

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

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

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

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

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

ホームページでは、クラスから返されたデータ テーブルを取得します。今、このデータテーブルにクエリを実行し、上記のセクションを構築したいと思います..例

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

4

6 に答える 6

1

.NET 3.5 を使用している場合は、LINQ to DataSetを使用できます。

于 2009-05-01T12:50:23.520 に答える
1

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

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

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

于 2009-05-01T12:58:08.587 に答える
1

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

var myDataTable = dt.AsEnumerable();
var headlines = myDataTable.Where(t => t.NewsID == 0).Take(5);
于 2009-05-01T12:58:42.270 に答える
0

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

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

トップ5に入る方法がわからない!?

于 2009-05-01T12:54:49.703 に答える
0

3.5 を使用していない場合は、単純な for ループを使用して、テーブルを並べ替えた後に上位 5 行を取得できます。

于 2009-05-01T13:17:06.717 に答える
0

Datatable には Select メソッドがありますが、返される量を制限する方法があるとは思わないでください。私はLINQの方法が好きですが、単なる代替手段です....しかし、制限によりこれがカウントされる可能性があります。

dt.Select("NewsType = 0");
于 2009-05-01T13:24:50.083 に答える