I've encountered situations like this, where your code will be guaranteed to generate exactly one single result row, and I tend to agree that instantiation of an enumerator for that row isn't ideal. In fact, I've seen a few apps where single-row (or even single-column) result sets were in use, and the authors wrote some very simple wrapper class methods that were designed to take an arbitrary single-result query and return it in a single call, packaging up the overhead of the call, parameters, etc. in a neat, clean single method.
In that case, I actually think its a good case to check the Count property for the rows, and if its non-one, throw an exception. If you've got a query that's forever and always supposed to return exactly one value, but more show up, something's wrong.
if (objDT != null && objDT.Rows.Count != 1)
{
DataRow x = objDT.Rows[0];
var value1 = x["column1"]; // and so on
//..do whatever
}
else
{
if (objDT==null)
{
throw new InvalidOperationException("No data returned");
}
if (objDT.Rows.Count != 1)
{
throw new InvalidOperationException("Multiple values returned where only one expected.");
}
}