private bool disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { LineEnumerator?.Dispose(); DataRowEnumerator?.Dispose(); } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. disposedValue = true; } }
public IEnumerable <TPage> ToPagedData(int pageSize) { DataRowEnumerator = Rows().GetEnumerator(); while (DataRowEnumerator.MoveNext()) { Mapper.AddRowToPage(DataRowEnumerator.Current); if (Mapper.CurrentPageRowCount() >= pageSize) { yield return(Mapper.CurrentPage); Mapper.NextPage(); } } if (Mapper.CurrentPageRowCount() > 0) { yield return(Mapper.CurrentPage); } }
/// <summary> /// 初始化 /// </summary> /// <param name="input"></param> public Mapper(object input) : this() { var reader = input as IDataReader; if (reader != null) { _reader = new DataReaderEnumerator(reader); Error = _reader.Error; _index = 1; return; } var no = input as NameObjectCollectionBase; if (no != null) { _nv = new NameValueEnumerator(no); Error = _nv.Error; _index = 2; return; } var row = (input as DataRowView)?.Row ?? input as DataRow; if (row?.Table != null) { _row = new DataRowEnumerator(row); Error = _row.Error; _index = 3; return; } var dataset = input as DataSet; if (dataset != null) { _dataSet = new DataSetEnumerator(dataset); Error = _dataSet.Error; _index = 4; return; } var dict = input as IDictionary; if (dict != null) { _enumerator = dict.GetEnumerator(); _index = 5; return; } var ee = (input as IEnumerable)?.GetEnumerator() ?? input as IEnumerator; if (ee != null) { _pair = new PairEnumerator(ee); Error = _pair.Error; _index = 6; return; } var ps = PublicPropertyCache.GetByType(input.GetType()); if (ps.Length > 0) { _property = new PropertyEnumerator(input, ps); Error = _property.Error; _index = 7; } }