使用top子句查询数据表

时间:2013-09-20 05:37:30

标签: c# asp.net .net sql datatable

我正在我的datalist中实现分页。 (visual studio 2008)

为此,我有数据表,我想在其上查询分页。

我有以下数据表:

enter image description here

我想实现以下SQLquery:

select top 5 * from (select   ROW_NUMBER() OVER (ORDER BY Index) as Row from users) T where Row > " 10

我想对上面的数据表进行相同的查询。

我很困惑如何使用“top”来查询数据表。

为此我做了以下尝试:

DTResult.Select("Index < " & Integer.Parse(ddlPage.SelectedValue.ToString()))

(注意:ddlPage是我的下拉列表,其中包含分页数字,如5,10,25等)

这种尝试并没有给我预期的结果。

请帮帮我。

4 个答案:

答案 0 :(得分:2)

此链接可能会帮助您......并参考它......

http://weblogs.asp.net/scottgu/archive/2006/01/07/434787.aspx

答案 1 :(得分:2)

您必须使用LINQ查询来找出所需的输出。

我认为这个链接会给你回答

querying datatable using linq and c#

答案 2 :(得分:2)

尝试使用以下代码,它会为您提供所需的输出。

DataView dv = new DataView(DTResult);
dv.RowFilter = "ID < " + ddlPage.SelectedValue.ToString();
DTResult = dv.ToTable(); 

在此之后,您将直接提供&#34; DTResult&#34;数据表到您的datalist。

答案 3 :(得分:2)

你必须使用Linq在C#中获取类似SQL的操作

DataTable MyTable = new DataTable();// Yur Table here
  var FirstResult = from Row in MyTable.AsEnumerable()
                    orderby Row.Field<int>("Index")
                    select new
                    {
                      KioskId = Row.Field<string>("KioskId"),
                      Index = Row.Field<int>("Index"),
                      FileName = Row.Field<string>("FileName")
                    };
  var AfterRowNumbering = FirstResult.Select((x, index) => new  {
                      KioskId=x.KioskId,
                      Index=x.Index,
                      FileName = x.FileName,
                      Row_Number = index
                      }).Take(5);
 var FinalResult = from row in AfterRowNumbering
                   where row.Row_Number > 10
                   select row;

这个表达式可以进一步简化。