【问题标题】:Querying a datatable with top clause使用 top 子句查询数据表
【发布时间】:2013-09-25 09:57:42
【问题描述】:

我正在我的数据列表中实现分页。 (视觉工作室 2008)

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

我有以下数据表:

我想实现以下 SQL 查询:

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 等)

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

请帮帮我。

【问题讨论】:

  • 尝试跳过并接受您的查询

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


【解决方案1】:

你必须使用 LINQ 查询来找出你想要的输出。

我想这个链接会给你答案

querying datatable using linq and c#

【讨论】:

  • .Take(2) after Enumerable is not comming
【解决方案2】:

试试下面的代码,它会给你想要的输出。

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

在此之后,您将直接将“DTResult”数据表提供给您的数据列表。

【讨论】:

  • 我想在它上面实现我在sql查询中提到的top子句,我该怎么做?
【解决方案3】:

你必须使用 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;

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

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2014-09-06
    • 2017-10-14
    相关资源
    最近更新 更多