2009-05-01 41 views
1

我有一个新闻门户。如何查询强类型数据表

对于这个门户网站我有一个数据库与 “新闻” 表,并有以下的列 (NewSID的,类别ID,NewsTitle,的新闻稿,DateAdded,ImagePath的,TotalRead,NewsType,isActive)

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

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

主页有不同的新闻部分..这些是; - 标题(5项) - 子标题(4项) - 最后5个新闻条目为每个新闻类别的...(类别等;体育,地方新闻,经济,

对于家庭如果我的datatable被称为“dt”,那么有没有一种类似于sql的方法,如果我的datatable被称为“dt”,那么是否有类似于sql的方法查询此dt如“选择TOP(5)NewsID,NewsTitle,NewsText from dt where NewsType = 0”- 0代表标题?

回答

1

绝对。你可以像Dave Cluderay提到的use LINQ。例如,您可以运行:

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

感谢您的回答克里斯..这个解决方案快吗? – 2009-05-01 16:05:18

0

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

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

不知道你会如何得到前5名!?

1

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

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

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

0

如果您不在3.5中,您可以使用简单的for循环在排序表后获取前5行。

0

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

dt.Select("NewsType = 0");