public static SqlString Substring(this ISqlString source, int offset, int count) { if (source == null || source.IsNull) { return(SqlString.Null); } var en = source.GetEnumerator(); var sb = new StringBuilder(count); int index = -1; while (en.MoveNext()) { if (++index < offset) { continue; } sb.Append(en.Current); if (index == count - 1) { break; } } #if PCL var s = sb.ToString(); return(new SqlString(s)); #else var chars = new char[count]; sb.CopyTo(0, chars, 0, count); return(new SqlString(chars)); #endif }