public override long GetChars(int i, long fieldoffset, char[] buffer, int bufferoffset, int length) { var s = (string)this[i]; var available = s.Length - (int)fieldoffset; if (available <= 0) { return(0); } var count = TypeHelpers.Min(length, available); s.CopyTo((int)fieldoffset, buffer, bufferoffset, count); return(count); }
public override int GetValues(object[] values) { // duplicate the key fields on the stack var members = _memberNames; var current = this.current; var accessor = this.accessor; var count = TypeHelpers.Min(values.Length, members.Length); for (var i = 0; i < count; i++) { values[i] = accessor[current, members[i]] ?? DBNull.Value; } return(count); }
public override long GetBytes(int i, long fieldOffset, byte[] buffer, int bufferoffset, int length) { var s = (byte[])this[i]; var available = s.Length - (int)fieldOffset; if (available <= 0) { return(0); } var count = TypeHelpers.Min(length, available); Buffer.BlockCopy(s, (int)fieldOffset, buffer, bufferoffset, count); return(count); }