2010-07-06 2 views
3

Я извлекаю 10 ящиков из моей базы данных, но хочу пропустить первый. Причина в том, что первый элемент в моей таблице уже отображается в главном div на моей странице. Теперь я хочу перечислить все остальные оставшиеся записи под ним. Как это сделать?Как пропустить первую строку в sqldatareader

Мой код работает нормально, и я могу отображать все записи у читателя. Теперь мне нужно только пропустить первый.

ответ

13

Просто читать первый, а затем продолжить с другими:

myReader.Read(); 

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

Спасибо, оцените помощь ур. – Churchill

1

Просто позвоните по номеру reader.Read(), чтобы перейти к следующей записи. Затем относитесь к читателю как обычно. Вы можете по-прежнему проверить значение reader.Read() от этого первого вызова - если он возвращает false, тогда не было даже первой записи, которую вы ожидали.

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

Шесть лет спустя вы научили меня бесценному уроку. Спасибо. –

0

Я не могу не думать о т Шляпа там должен быть что-то еще «неправильно», когда вам требуется пропустить первую строку в вашем DataReader как:

  • Может быть, ваш SQL-запрос, sproc или что-то следует исключить первую строку вместо этого?
  • Почему у вас уже есть ваш первый ряд? Может быть, вы могли бы получить все ряды одновременно?

Ваш вопрос подразумевает отсутствие опыта кодирования - как в общем, так и в отношении DataReader или что-то в этом роде. Может быть, вы могли бы получить еще большую помощь, если бы объяснили, почему вам нужно пропустить первую строку?

Смежные вопросы