如何跳过sqldatareader中的第一行

时间:2010-07-06 08:30:45

标签: c#

我正从我的数据库中检索10个,但我想跳过第一个。原因是我的表中的第一项已经显示在我页面上的主div中。现在我想列出其下的所有其他剩余记录。我该如何做到这一点?

我的代码工作正常,我可以显示阅读器的所有记录。我现在需要的是如何跳过第一个。

4 个答案:

答案 0 :(得分:13)

只需阅读第一个,然后继续其他人:

myReader.Read();

while(myReader.Read())
{
   //do stuff
}

答案 1 :(得分:10)

如果您想使用Linq,可以使用简单的扩展方法来使用DataReaders:

public static IEnumerable<IDataRecord> AsEnumerable(this IDataReader reader)
{
    while (reader.Read())
    {
        yield return reader;
    }
}

然后,您可以使用Linq Skip方法:

using (var reader = command.ExecuteRead())
{
    foreach(var row in reader.AsEnumerable.Skip(1))
    {
        // whatever you do with the data...
    }
}

答案 2 :(得分:1)

只需拨打reader.Read()一个额外的时间开始,即可前进到下一条记录。然后正常对待读者。您可能仍希望检查第一次调用中reader.Read()的值 - 如果它返回false,那么甚至没有您期望的第一条记录。

答案 3 :(得分:0)

当你需要跳过DataReader中的第一行时,我不禁想到还有别的“错误”:

  • 也许您的SQL查询,sproc或其他什么应该排除第一行?
  • 为什么你的第一排?也许你可以同时获得所有行?

您的问题意味着缺乏编码经验 - 无论是一般情况还是与DataReader等有关。如果您解释为什么需要跳过第一行,也许你可以得到更多的帮助?