DataTable to given type T simple mapper
You can minimize you code taking out the filtering out side of loop.
Avoid catching exception inside a loop if it needed ,(it seems like it cannot be avoided here)
No need to invoke datarow extension method to get value , you can get it directly.
Naming of variable is really bad.


This is first round of re factoring.

public static T[] MapObjects&lt;T&gt;(DataTable dataTable, Func&lt;PropertyInfo, bool&gt; 
 propRestriction) where T : new()
{
var mappedObjectProperties = typeof(T).GetProperties()
                                       .Where(elem =&gt; !propRestriction(elem)).ToList();
var mappedObjectCollection = new List&lt;T&gt;();
foreach (var dataRow in dataTable.AsEnumerable())
{
    var mappedObject = new T();
    foreach (var mappedObjectProperty in mappedObjectProperties)
    {
        if (dataTable.Columns.Contains(mappedObjectProperty.Name))
        {
            var value = dataRow[mappedObjectProperty.Name];
            mappedObjectProperty.SetValue(mappedObject, value, null);
        }
        else
        {
            log.Debug("Nothing to set for property: {0}", prop.Name);
        }
    }
    mappedObjectCollection.Add(mappedObject);
  }
  return mappedObjectCollection.ToArray();
}