Sorting by string can fail if the data is malformed (leading spaces, alphas). If you can afford to bring the data into memory, this should cut out the loopholes:
var result = db.LengthDatas
.ToList()
.Select(c =>
{
decimal d;
Decimal.TryParse(c.AbsoluteCounter, out d);
return d;
})
.Max();
But if you're confident about the data quality, just use
var result1 = db.LengthDatas.Max(c => c.AbsoluteCounter);
ADDENDUM
To round out the discussion about converting the string to decimal on the server instead of in memory, I tried out the technique @MarcinJuraszek references above.
I'm testing in a Code First app, but added an EDMX by adding an ADO.Net Entity Data Model to the project. There's a few things to tidy up, but essentially the following type of query will work
var result = db.LengthDatas.Max(c => EdmxExtensions.DecimalParse(c.AbsoluteCounter));
The SQL generated by Linq to Entities is
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
MAX( CAST( [Extent1].[AbsoluteCounter] AS decimal(12,2))) AS [A1]
FROM [dbo].[LengthDatas] AS [Extent1]
) AS [GroupBy1]
However, should note that this is not a robust conversion as you get with c# Decimal.TryParse. It will throw an exception with malformed strings.