如何在 sqldatareader 中跳过第一行?

3

我从数据库检索了10行数据,但是我想跳过第一行,原因是我的表中的第一个项目已经在主div上显示了。现在我想在它下面列出所有剩余的记录。我该怎么做?

我的代码可以正常工作,并且我可以显示所有来自读取器的记录。现在我只需要知道如何跳过第一个。

4个回答

15

从第一个开始阅读,然后继续阅读其他内容:

myReader.Read();

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

10

如果你喜欢使用Linq,在这里有一个技巧可以让它与DataReader一起工作,使用一个简单的扩展方法:

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...
    }
}

六年后,您教给了我一课非常珍贵的经验。谢谢您。 - Pat Migliaccio

1
只需多调用一次reader.Read()即可开始,以前进到下一个记录。然后像平常一样处理读取器。您可能仍然想要检查来自第一次调用的reader.Read()的值——如果它返回false,那么您期望的第一条记录甚至都不存在。

0

我无法不想到,当您需要跳过DataReader中的第一行时,还有其他“错误”存在:

  • 也许您的SQL查询、存储过程或任何其他内容应该排除第一行?
  • 为什么您已经有了第一行?也许您可以同时获取所有行?

您的问题暗示着缺乏编码经验——无论是总体上还是在DataReader方面或其他方面。如果您解释一下为什么需要跳过第一行,也许您可以获得更多帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接