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.