예제 #1
0
        protected async Task <IList <string> > ReadHeaderAsync(XsvReader xsvReader)
        {
            var header = Settings.HeaderStrings ?? Enumerable.Empty <string>();

            if (Settings.HeaderExists)
            {
                header = await xsvReader.ReadXsvLineAsync(Settings.Delimiters);
            }
            return(header.ToList());
        }
예제 #2
0
        public async Task ReadAsync(TextReader reader, CancellationToken cancellationToken)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }

            if (cancellationToken == null)
            {
                throw new ArgumentNullException("cancellationToken");
            }

            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }

            using (var xsvReader = new XsvReader(reader, Settings.CommentToken))
            {
                var headers = await ReadHeaderAsync(xsvReader);

                _columnHeaders = new XsvColumnHeaders(headers);

                _items.Clear();
                while (!xsvReader.EndOfData)
                {
                    if (cancellationToken.IsCancellationRequested)
                    {
                        return;
                    }

                    var row = await xsvReader.ReadXsvLineAsync(Settings.Delimiters);

                    _items.Add(CreateXsvRow(headers, row));
                }
            }
        }