Вы можете попробовать использовать встроенную таблицу dbo.Numbers
:
SELECT TOP 21
REPLICATE('*', 22-n) AS output
FROM dbo.Numbers
ORDER BY n;
Если dbo.Numbers
недоступно в вашей версии SQL Server, просто используйте последовательность некоторого вида.
Это зависит от TextReader
. Если это StreamReader
, вы можете использовать:
sr.BaseStream.Position = 0;
sr.DiscardBufferedData();
(Предполагая, что базовый поток, конечно, доступен для поиска.)
Другие реализации TextReader
могут не иметь 1140524] концепция "перемотки назад", точно так же, как IEnumerable
нет. Во многих отношениях вы можете думать о TextReader
как о прославленном IEnumerable
. У него есть методы для чтения целых блоков данных за раз, чтения строк и т. Д., Но в основном это тип «прямого чтения».
РЕДАКТИРОВАТЬ: Я не верю, что StringReader
поддерживает какой-либо вид перемотки назад - вам лучше воссоздать StringReader
из исходной строки, если вы можете.
Если это StreamReader
, и , если этот поток поддерживает поиск, то:
reader.BaseStream.Seek(0, SeekOrigin.Begin);
reader.DiscardBufferedData();
Однако это невозможно на произвольном ] ЧтениеТекст
S. Возможно, вы могли бы прочитать все это как строку, а затем повторно использовать StringReader
?
Ищите, и вы найдете.
Seek(0, SeekOrigin.Begin);
TextReader
является производным от StreamReader
. StreamReader
содержит свойство BaseStream