如何查询强类型数据表

时间:2009-05-01 12:47:52

标签: asp.net datatable dataset strong-typing

我有一个新闻门户网站。

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

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

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

主页有不同的新闻部分..这些是; - 头条新闻(5件物品) - 小标题(4项) - 每个新闻类别的最近5个新闻项目......(类别如:体育,本地新闻,经济学,

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

如果我的数据表被称为“dt”,那么有没有办法像sql一样查询这个dt,例如“从dt中选择TOP(5)NewsID,NewsTitle,NewsText,其中NewsType = 0” - 0代表标题?

6 个答案:

答案 0 :(得分:1)

如果您使用的是.NET 3.5,则可以使用LINQ to DataSet

答案 1 :(得分:1)

如果您不在.NET 3.5中,则可以基于DataTable对象创建DataView,然后在DataView上设置RowFilter属性。例如:

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

然后,您只能捕获DataView中的前5行。

答案 2 :(得分:1)

绝对。你可以像Dave Cluderay提到的那样use LINQ。例如,要检索标题,您可以运行:

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

答案 3 :(得分:0)

您可以使用默认视图来过滤数据表,如下所示:

dt.DefaultView.RowFilter =“NewsType = 0”;

不确定如何获得前五名!?

答案 4 :(得分:0)

如果你不在3.5中,你可以使用一个简单的for循环来排序表后得到前5行。

答案 5 :(得分:0)

Datatable上有一个Select方法,不要认为有办法限制返回的数量。我喜欢LINQ方式,但只是另一种选择....但是限制可能会计算出来。

dt.Select("NewsType = 0");