Revision: 27808
                            
                                                            
                                    
                                        
Initial Code
                                    
                                    
                                                            
                                    
                                        
Initial URL
                                    
                                    
                                
                                                            
                                    
                                        
Initial Description
                                    
                                    
                                                            
                                    
                                        
Initial Title
                                    
                                    
                                                            
                                    
                                        
Initial Tags
                                    
                                    
                                
                                                            
                                    
                                        
Initial Language
                                    
                                    
                                                    
                        at June 24, 2010 05:04 by s0lidmetal
                            
                            Initial Code
<System.Runtime.CompilerServices.Extension()> _
        Public Sub AssignObjectValue(ByVal dr As DataRow, ByVal target As Object)
            For Each dc As DataColumn In dr.Table.Columns
                Dim colName As String = dc.ColumnName
                Dim colValue As Object = dr(colName)
                If colValue Is DBNull.Value Then
                    colValue = Nothing
                End If
                Dim pi As PropertyInfo = target.GetType().GetProperty(colName)
                If pi IsNot Nothing AndAlso colValue IsNot Nothing Then
                    Dim propType As Type = Nothing
                    Dim nullableType As Type = Nullable.GetUnderlyingType(pi.PropertyType)
                    If nullableType IsNot Nothing Then
                        propType = nullableType
                    Else
                        propType = pi.PropertyType
                    End If
                    If propType Is colValue.GetType() Then
                        pi.SetValue(target, colValue, Nothing)
                    End If
                End If
            Next
        End Sub
                                Initial URL
Initial Description
This will populate object properties with values from a DataRow. The DataTable column names must match the property names and types of the target class.
Example:
    DataTable dt = new DataTable();
    dt.Columns.Add("TestString", typeof(string));
    dt.Columns.Add("TestBool", typeof(bool));
    dt.Columns.Add("TestInt", typeof(int));
    dt.Columns.Add("TestDouble", typeof(double));
    dt.Columns.Add("TestDecimal", typeof(decimal));
    dt.Columns.Add("TestFloat", typeof(string));
    DataRow dr = dt.NewRow();
    dr["TestString"] = "Hello";
    dr["TestBool"] = false;
    dr["TestInt"] = DBNull.Value;
    dr["TestDouble"] =4.56;
    dr["TestDecimal"] = 7.89m;
    dr["TestFloat"] = "3.14f";
    dt.Rows.Add(dr);
    TestClass tc = new TestClass();
    dr.AssignObjectValue(tc);
            
    class TestClass
    {
        public string TestString { get; set; }
        public bool? TestBool { get; set; }
        public int? TestInt { get; set; }
        public double TestDouble { get; set; }
        public decimal TestDecimal { get; set; }
        public float TestFloat { get; set; }
    }
                                Initial Title
Reflection extension method to bind DataRow values to object properties.
Initial Tags
Initial Language
Visual Basic