1

我有一个新闻门户。

对于这个门户,我有一个带有“新闻”表和以下列(NewsID、CategoryID、NewsTitle、NewsText、DateAdded、ImagePath、TotalRead、NewsType、isActive)的数据库

我使用数据集文件 (.xsd),对于这个,我有一个查询,它将最近 3 天的新闻返回到我编码的自定义类中,名为 HHNews。

HHNews 类有一个函数,它返回一个强类型数据表,其中包括我上面提到的查询的结果。

主页有不同的新闻部分。这些是;- 标题(5 项) - 子标题(4 项) - 每个新闻类别的最后 5 条新闻……(类别如:体育、地方新闻、经济、

对于主页,我检索从类返回的数据表。现在我想查询这个数据表并构建我上面提到的部分.. 例如

如果我的数据表被称为“dt”,那么有没有办法像 sql 一样查询这个 dt,例如“select TOP(5) NewsID, NewsTitle, NewsText from dt where NewsType = 0” - 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 回答