Getting minimum – Min() – for DateTime column in a DataTable using LINQ to DataSets?-Collection of common programming errors

I need to get the minimum DateTime value of a column in a DataTable. The DataTable is generated dynamically from a CSV file, therefore I don’t know the name of that column until runtime. Here is code I’ve got that doesn’t work…

private DateTime GetStartDateFromCSV(string inputFile, string date_attr)
{
    EnumerableRowCollection table = CsvStreamReader.GetDataTableFromCSV(inputFile, "input", true).AsEnumerable();
    DateTime dt = table.Select(record => record.Field(date_attr)).Min();
    return dt;
}

The variable table is broken out just for clarity. I basically need to find the minimum value as a DateTime for one of the columns (to be chosen at runtime and represented by date_attr).

I have tried several solutions from SO (most deal with known columns and/or non-DateTime fields). What I’ve got throws an error at runtime telling me that it can’t do the DateTime conversion (that seems to be a problem with Linq?)

I’ve confirmed that the data for the column name that is in the string date_attr is a date value.

UPDATE: Stacktrace as requested:

System.InvalidCastException was unhandled by user code
  Message="Specified cast is not valid."
  Source="System.Data.DataSetExtensions"
  StackTrace:
       at System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value)
       at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName)
       at Presenter.Views.NetworkVisualizationDetailPresenter.c__DisplayClass1.b__0(DataRow t) in Presenter\Views\NetworkVisualizationDetailPresenter.cs:line 194
       at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
       at System.Linq.Enumerable.Min[TSource](IEnumerable`1 source)
       at System.Linq.Enumerable.Min[TSource,TResult](IEnumerable`1 source, Func`2 selector)
       atPresenter.Views.NetworkVisualizationDetailPresenter.GetStartDateFromCSV(String inputFile, String date_attr) in Presenter\Views\NetworkVisualizationDetailPresenter.cs:line 194
       at Presenter.Views.NetworkVisualizationDetailPresenter.GetDynamicNetworkVisualizationData(String inputFile, Int32 dataMode, Int32 timeInterval, String date_attr, String entity_attr, String event_attr) in Views\NetworkVisualizationDetailPresenter.cs:line 123
       at Presenter.Views.NetworkVisualizationDetail.Page_Load(Object sender, EventArgs e) in NetworkVisualizationDetail.aspx.cs:line 114
       at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
       at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
       at System.Web.UI.Control.OnLoad(EventArgs e)
       at System.Web.UI.Control.LoadRecursive()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException: