如何限制数据集中的行数

时间:2014-01-31 09:55:42

标签: c# asp.net dataset sqldataadapter

参考代码

 [WebMethod]

 public static string GetData()
 {
      string query = "SELECT * FROM tblCountry";
      SqlCommand cmd = new SqlCommand(query);
      return GetData(cmd).GetXml();
 }
 private static DataSet GetData(SqlCommand cmd)
 {
      string strConnString = @"Data Source=.\sqlExpress;Initial Catalog=dbTest;Integrated  Security=SSPI; pooling=false";
      using (SqlConnection con = new SqlConnection(strConnString))
      {
          using (SqlDataAdapter sda = new SqlDataAdapter())
          {
             cmd.Connection = con;
             sda.SelectCommand = cmd;
             using (DataSet ds = new DataSet())
             {
                sda.Fill(ds);
                return ds;
             }
          }
      }
 } 

详情请见:Link

  

查询返回20行,我需要单独显示10行。在没有任何查询更改的情况下,有可能限制数据集中的数据。提出一些想法

4 个答案:

答案 0 :(得分:4)

你可以试试这个

var rows = ds.Tables[0].AsEnumerable().Take(10);

现在您也可以将这些行转换为像这样的数据表

DataTable limitedTable = rows.CopyToDataTable<DataRow>();

答案 1 :(得分:0)

您对更改查询的要求有多严格?你可以在查询中添加一些文字吗?

如果是,您可以使用SET ROWCOUNT

示例:

string query = "SET ROWCOUNT 10;"
query += "SELECT * FROM tblCountry";

答案 2 :(得分:0)

您可以使用Fill的重载来获取开始和结束记录索引。

var ds = new DataSet; //using means the DataSet will go out of scope so you can't return it!
sda.Fill(1, 10, ds.Tables.Add("MyTable"));
return ds; //it now contains a table called "MyTable".

您可以找到更多详情here

但是和大多数评论者一样,我更倾向于在可能的情况下修改查询

答案 3 :(得分:-1)

string query = "SELECT TOP 10 FROM tblCountry";

您可以像这样进行查询,只返回10行。