decimal t = 5.5M;
Console.WriteLine(TimeSpan.FromHours((double)t).ToString());
That'll give you "05:30:00" which is pretty close. You could then format that to your desired result:
var ts = TimeSpan.FromHours((double)t);
Console.WriteLine("{0} hrs {1} minutes", ts.Hours, ts.Minutes);
Note that there's a potential for loss of accuracy in the conversion from decimal to double, but I don't think it would be noticeable on the minute scale. Someone with a Skeet-like understanding of the type system might be able to chime in here.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…