# System.Data

``` diff
 namespace System.Data {
     public abstract class Constraint {
-        protected Constraint();

     }
+    public static class DataReaderExtensions {
+        public static bool GetBoolean(this DbDataReader reader, string name);
+        public static byte GetByte(this DbDataReader reader, string name);
+        public static long GetBytes(this DbDataReader reader, string name, long dataOffset, byte[] buffer, int bufferOffset, int length);
+        public static char GetChar(this DbDataReader reader, string name);
+        public static long GetChars(this DbDataReader reader, string name, long dataOffset, char[] buffer, int bufferOffset, int length);
+        public static DbDataReader GetData(this DbDataReader reader, string name);
+        public static string GetDataTypeName(this DbDataReader reader, string name);
+        public static DateTime GetDateTime(this DbDataReader reader, string name);
+        public static decimal GetDecimal(this DbDataReader reader, string name);
+        public static double GetDouble(this DbDataReader reader, string name);
+        public static Type GetFieldType(this DbDataReader reader, string name);
+        public static T GetFieldValue<T>(this DbDataReader reader, string name);
+        public static Task<T> GetFieldValueAsync<T>(this DbDataReader reader, string name, CancellationToken cancellationToken = default(CancellationToken));
+        public static float GetFloat(this DbDataReader reader, string name);
+        public static Guid GetGuid(this DbDataReader reader, string name);
+        public static short GetInt16(this DbDataReader reader, string name);
+        public static int GetInt32(this DbDataReader reader, string name);
+        public static long GetInt64(this DbDataReader reader, string name);
+        public static Type GetProviderSpecificFieldType(this DbDataReader reader, string name);
+        public static object GetProviderSpecificValue(this DbDataReader reader, string name);
+        public static Stream GetStream(this DbDataReader reader, string name);
+        public static string GetString(this DbDataReader reader, string name);
+        public static TextReader GetTextReader(this DbDataReader reader, string name);
+        public static object GetValue(this DbDataReader reader, string name);
+        public static bool IsDBNull(this DbDataReader reader, string name);
+        public static Task<bool> IsDBNullAsync(this DbDataReader reader, string name, CancellationToken cancellationToken = default(CancellationToken));
+    }
+    public static class DataRowComparer {
+        public static DataRowComparer<DataRow> Default { get; }
+    }
+    public sealed class DataRowComparer<TRow> : IEqualityComparer<TRow> where TRow : DataRow {
+        public static DataRowComparer<TRow> Default { get; }
+        public bool Equals(TRow leftRow, TRow rightRow);
+        public int GetHashCode(TRow row);
+    }
+    public static class DataRowExtensions {
+        public static T Field<T>(this DataRow row, DataColumn column);
+        public static T Field<T>(this DataRow row, DataColumn column, DataRowVersion version);
+        public static T Field<T>(this DataRow row, int columnIndex);
+        public static T Field<T>(this DataRow row, int columnIndex, DataRowVersion version);
+        public static T Field<T>(this DataRow row, string columnName);
+        public static T Field<T>(this DataRow row, string columnName, DataRowVersion version);
+        public static void SetField<T>(this DataRow row, DataColumn column, T value);
+        public static void SetField<T>(this DataRow row, int columnIndex, T value);
+        public static void SetField<T>(this DataRow row, string columnName, T value);
+    }
+    public static class DataTableExtensions {
+        public static DataView AsDataView(this DataTable table);
+        public static DataView AsDataView<T>(this EnumerableRowCollection<T> source) where T : DataRow;
+        public static EnumerableRowCollection<DataRow> AsEnumerable(this DataTable source);
+        public static DataTable CopyToDataTable<T>(this IEnumerable<T> source) where T : DataRow;
+        public static void CopyToDataTable<T>(this IEnumerable<T> source, DataTable table, LoadOption options) where T : DataRow;
+        public static void CopyToDataTable<T>(this IEnumerable<T> source, DataTable table, LoadOption options, FillErrorEventHandler errorHandler) where T : DataRow;
+    }
+    public abstract class EnumerableRowCollection : IEnumerable {
+        IEnumerator System.Collections.IEnumerable.GetEnumerator();
+    }
+    public class EnumerableRowCollection<TRow> : EnumerableRowCollection, IEnumerable, IEnumerable<TRow> {
+        public IEnumerator<TRow> GetEnumerator();
+        IEnumerator System.Collections.IEnumerable.GetEnumerator();
+    }
+    public static class EnumerableRowCollectionExtensions {
+        public static EnumerableRowCollection<TResult> Cast<TResult>(this EnumerableRowCollection source);
+        public static OrderedEnumerableRowCollection<TRow> OrderBy<TRow, TKey>(this EnumerableRowCollection<TRow> source, Func<TRow, TKey> keySelector);
+        public static OrderedEnumerableRowCollection<TRow> OrderBy<TRow, TKey>(this EnumerableRowCollection<TRow> source, Func<TRow, TKey> keySelector, IComparer<TKey> comparer);
+        public static OrderedEnumerableRowCollection<TRow> OrderByDescending<TRow, TKey>(this EnumerableRowCollection<TRow> source, Func<TRow, TKey> keySelector);
+        public static OrderedEnumerableRowCollection<TRow> OrderByDescending<TRow, TKey>(this EnumerableRowCollection<TRow> source, Func<TRow, TKey> keySelector, IComparer<TKey> comparer);
+        public static EnumerableRowCollection<S> Select<TRow, S>(this EnumerableRowCollection<TRow> source, Func<TRow, S> selector);
+        public static OrderedEnumerableRowCollection<TRow> ThenBy<TRow, TKey>(this OrderedEnumerableRowCollection<TRow> source, Func<TRow, TKey> keySelector);
+        public static OrderedEnumerableRowCollection<TRow> ThenBy<TRow, TKey>(this OrderedEnumerableRowCollection<TRow> source, Func<TRow, TKey> keySelector, IComparer<TKey> comparer);
+        public static OrderedEnumerableRowCollection<TRow> ThenByDescending<TRow, TKey>(this OrderedEnumerableRowCollection<TRow> source, Func<TRow, TKey> keySelector);
+        public static OrderedEnumerableRowCollection<TRow> ThenByDescending<TRow, TKey>(this OrderedEnumerableRowCollection<TRow> source, Func<TRow, TKey> keySelector, IComparer<TKey> comparer);
+        public static EnumerableRowCollection<TRow> Where<TRow>(this EnumerableRowCollection<TRow> source, Func<TRow, bool> predicate);
+    }
+    public sealed class OrderedEnumerableRowCollection<TRow> : EnumerableRowCollection<TRow>
+    public abstract class TypedTableBase<T> : DataTable, IEnumerable, IEnumerable<T> where T : DataRow {
+        protected TypedTableBase();
+        protected TypedTableBase(SerializationInfo info, StreamingContext context);
+        public EnumerableRowCollection<TResult> Cast<TResult>();
+        public IEnumerator<T> GetEnumerator();
+        IEnumerator System.Collections.IEnumerable.GetEnumerator();
+    }
+    public static class TypedTableBaseExtensions {
+        public static EnumerableRowCollection<TRow> AsEnumerable<TRow>(this TypedTableBase<TRow> source) where TRow : DataRow;
+        public static TRow ElementAtOrDefault<TRow>(this TypedTableBase<TRow> source, int index) where TRow : DataRow;
+        public static OrderedEnumerableRowCollection<TRow> OrderBy<TRow, TKey>(this TypedTableBase<TRow> source, Func<TRow, TKey> keySelector) where TRow : DataRow;
+        public static OrderedEnumerableRowCollection<TRow> OrderBy<TRow, TKey>(this TypedTableBase<TRow> source, Func<TRow, TKey> keySelector, IComparer<TKey> comparer) where TRow : DataRow;
+        public static OrderedEnumerableRowCollection<TRow> OrderByDescending<TRow, TKey>(this TypedTableBase<TRow> source, Func<TRow, TKey> keySelector) where TRow : DataRow;
+        public static OrderedEnumerableRowCollection<TRow> OrderByDescending<TRow, TKey>(this TypedTableBase<TRow> source, Func<TRow, TKey> keySelector, IComparer<TKey> comparer) where TRow : DataRow;
+        public static EnumerableRowCollection<S> Select<TRow, S>(this TypedTableBase<TRow> source, Func<TRow, S> selector) where TRow : DataRow;
+        public static EnumerableRowCollection<TRow> Where<TRow>(this TypedTableBase<TRow> source, Func<TRow, bool> predicate) where TRow : DataRow;
+    }
 }
```

