public IEnumerator GetEnumerator() { _arguments.AddSupportedCapabilities(DataSourceCapabilities.Page); _arguments.AddSupportedCapabilities(DataSourceCapabilities.Sort); _arguments.AddSupportedCapabilities(DataSourceCapabilities.RetrieveTotalRowCount); EditableArrayList list = (EditableArrayList)_objectBinder.List; _arguments.TotalRowCount = list.Count; if (!string.IsNullOrEmpty(_arguments.SortExpression)) { list = new EditableArrayList(list.ItemType, list.Count); list.AddRange(_objectBinder.List); list.SortEx(_arguments.SortExpression); } int start = _arguments.StartRowIndex >= 0? _arguments.StartRowIndex: 0; int count = _arguments.MaximumRows > 0? Math.Min(_arguments.MaximumRows, list.Count): list.Count; for (int i = 0; i < count; i++) { object o = list[i + start]; yield return o is ICustomTypeDescriptor? o: new ObjectHolder(o, _objectBinder); } }