Your first extension has a flaw. Won't work if the string isn't a number. Will throw an error. Would be better to use the TryParse method instead, then return a default value if the string fails conversion.

No comment on the second one as I normally get my data from the underlying data rather than the grid itself.

Lastly, I use a lot of LINQ. It's a real time saver. I've converted previous loops that used the .Select method of the datatable, rolled them over into their LINQ equivalents, and shaved off considerable amounts of time. Mostly I use LINQ to Object. Not 100% sold on LINQ to SQL directly. Two things in LINQ that I take the most advantage of: 1) Lambdas... I use a lot of Lambdas to select, transform, and perform calculations on my data. 2) LINQ to XML - being able to transform my datatable into an XML document... along with using Lambdas to control what data is selected... Now I can transform my data into an XML document, and send it all over to my sproc all in one chunk, rather than making repeated calls to the sproc for each row. Yet another performance gainer.

-tg