DataRowExtensions.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataSet / System / Data / DataRowExtensions.cs / 1305376 / DataRowExtensions.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
// spather
//----------------------------------------------------------------------------- 
using System; 
using System.Data.DataSetExtensions;
 
namespace System.Data {

    /// 
    /// This static class defines the DataRow extension methods. 
    /// 
    public static class DataRowExtensions { 
 
        /// 
        ///  This method provides access to the values in each of the columns in a given row. 
        ///  This method makes casts unnecessary when accessing columns.
        ///  Additionally, Field supports nullable types and maps automatically between DBNull and
        ///  Nullable when the generic type is nullable.
        ///  
        /// 
        ///   The input DataRow 
        ///  
        /// 
        ///   The input column name specificy which row value to retrieve. 
        /// 
        /// 
        ///   The DataRow value for the column specified.
        ///  
        public static T Field(this DataRow row, string columnName) {
            DataSetUtil.CheckArgumentNull(row, "row"); 
            return UnboxT.Unbox(row[columnName]); 
        }
 
        /// 
        ///  This method provides access to the values in each of the columns in a given row.
        ///  This method makes casts unnecessary when accessing columns.
        ///  Additionally, Field supports nullable types and maps automatically between DBNull and 
        ///  Nullable when the generic type is nullable.
        ///  
        ///  
        ///   The input DataRow
        ///  
        /// 
        ///   The input DataColumn specificy which row value to retrieve.
        /// 
        ///  
        ///   The DataRow value for the column specified.
        ///  
        public static T Field(this DataRow row, DataColumn column) { 
            DataSetUtil.CheckArgumentNull(row, "row");
            return UnboxT.Unbox(row[column]); 
        }

        /// 
        ///  This method provides access to the values in each of the columns in a given row. 
        ///  This method makes casts unnecessary when accessing columns.
        ///  Additionally, Field supports nullable types and maps automatically between DBNull and 
        ///  Nullable when the generic type is nullable. 
        /// 
        ///  
        ///   The input DataRow
        /// 
        /// 
        ///   The input ordinal specificy which row value to retrieve. 
        /// 
        ///  
        ///   The DataRow value for the column specified. 
        /// 
        public static T Field(this DataRow row, int columnIndex) { 
            DataSetUtil.CheckArgumentNull(row, "row");
            return UnboxT.Unbox(row[columnIndex]);
        }
 
        /// 
        ///  This method provides access to the values in each of the columns in a given row. 
        ///  This method makes casts unnecessary when accessing columns. 
        ///  Additionally, Field supports nullable types and maps automatically between DBNull and
        ///  Nullable when the generic type is nullable. 
        /// 
        /// 
        ///   The input DataRow
        ///  
        /// 
        ///   The input ordinal specificy which row value to retrieve. 
        ///  
        /// 
        ///   The DataRow version for which row value to retrieve. 
        /// 
        /// 
        ///   The DataRow value for the column specified.
        ///  
        public static T Field(this DataRow row, int columnIndex, DataRowVersion version) {
            DataSetUtil.CheckArgumentNull(row, "row"); 
            return UnboxT.Unbox(row[columnIndex, version]); 
        }
 
        /// 
        ///  This method provides access to the values in each of the columns in a given row.
        ///  This method makes casts unnecessary when accessing columns.
        ///  Additionally, Field supports nullable types and maps automatically between DBNull and 
        ///  Nullable when the generic type is nullable.
        ///  
        ///  
        ///   The input DataRow
        ///  
        /// 
        ///   The input column name specificy which row value to retrieve.
        /// 
        ///  
        ///   The DataRow version for which row value to retrieve.
        ///  
        ///  
        ///   The DataRow value for the column specified.
        ///  
        public static T Field(this DataRow row, string columnName, DataRowVersion version) {
            DataSetUtil.CheckArgumentNull(row, "row");
            return UnboxT.Unbox(row[columnName, version]);
        } 

        ///  
        ///  This method provides access to the values in each of the columns in a given row. 
        ///  This method makes casts unnecessary when accessing columns.
        ///  Additionally, Field supports nullable types and maps automatically between DBNull and 
        ///  Nullable when the generic type is nullable.
        /// 
        /// 
        ///   The input DataRow 
        /// 
        ///  
        ///   The input DataColumn specificy which row value to retrieve. 
        /// 
        ///  
        ///   The DataRow version for which row value to retrieve.
        /// 
        /// 
        ///   The DataRow value for the column specified. 
        /// 
        public static T Field(this DataRow row, DataColumn column, DataRowVersion version) { 
            DataSetUtil.CheckArgumentNull(row, "row"); 
            return UnboxT.Unbox(row[column, version]);
        } 

        /// 
        ///  This method sets a new value for the specified column for the DataRow it�s called on.
        ///  
        /// 
        ///   The input DataRow. 
        ///  
        /// 
        ///   The input ordinal specifying which row value to set. 
        /// 
        /// 
        ///   The new row value for the specified column.
        ///  
        public static void SetField(this DataRow row, int columnIndex, T value) {
            DataSetUtil.CheckArgumentNull(row, "row"); 
            row[columnIndex] = (object)value ?? DBNull.Value; 
        }
 
        /// 
        ///  This method sets a new value for the specified column for the DataRow it�s called on.
        /// 
        ///  
        ///   The input DataRow.
        ///  
        ///  
        ///   The input column name specificy which row value to retrieve.
        ///  
        /// 
        ///   The new row value for the specified column.
        /// 
        public static void SetField(this DataRow row, string columnName, T value) { 
            DataSetUtil.CheckArgumentNull(row, "row");
            row[columnName] = (object)value ?? DBNull.Value; 
        } 

        ///  
        ///  This method sets a new value for the specified column for the DataRow it�s called on.
        /// 
        /// 
        ///   The input DataRow. 
        /// 
        ///  
        ///   The input DataColumn specificy which row value to retrieve. 
        /// 
        ///  
        ///   The new row value for the specified column.
        /// 
        public static void SetField(this DataRow row, DataColumn column, T value) {
            DataSetUtil.CheckArgumentNull(row, "row"); 
            row[column] = (object)value ?? DBNull.Value;
        } 
 
        private static class UnboxT
        { 
            internal static readonly Converter Unbox = Create(typeof(T));

            private static Converter Create(Type type)
            { 
                if (type.IsValueType)
                { 
                    if (type.IsGenericType && !type.IsGenericTypeDefinition && (typeof(Nullable<>) == type.GetGenericTypeDefinition())) 
                    {
                        return (Converter)Delegate.CreateDelegate( 
                            typeof(Converter),
                                typeof(UnboxT)
                                    .GetMethod("NullableField", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic)
                                    .MakeGenericMethod(type.GetGenericArguments()[0])); 
                    }
                    return ValueField; 
                } 
                return ReferenceField;
            } 

            private static T ReferenceField(object value)
            {
                return ((DBNull.Value == value) ? default(T) : (T)value); 
            }
 
            private static T ValueField(object value) 
            {
                if (DBNull.Value == value) 
                {
                    throw DataSetUtil.InvalidCast(Strings.DataSetLinq_NonNullableCast(typeof(T).ToString()));
                }
                return (T)value; 
            }
 
            private static Nullable NullableField(object value) where TElem : struct 
            {
                if (DBNull.Value == value) 
                {
                    return default(Nullable);
                }
                return new Nullable((TElem)value); 
            }
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK