我有一个具有 2 个日期属性的类:FirstDay和LastDay.  LastDay可以为空。我想生成一个格式为"x year(s) y day(s)". 如果总年份小于 1,我想省略年份部分。如果总天数小于 1,我想省略天部分。如果年或天为 0,则它们应分别表示“天/年”,而不是“天/年”。
示例:
 
2.2 年:“2 年 73 天” 
1.002738 年:“1 年 1 天” 
0.2 年:“73 天” 
2 年:“2 年”
我有什么作品,但它很长:
private const decimal DaysInAYear = 365.242M;
public string LengthInYearsAndDays
{
    get
    {
        var lastDay = this.LastDay ?? DateTime.Today;
        var lengthValue = lastDay - this.FirstDay;
        var builder = new StringBuilder();
        var totalDays = (decimal)lengthValue.TotalDays;
        var totalYears = totalDays / DaysInAYear;
        var years = (int)Math.Floor(totalYears);
        totalDays -= (years * DaysInAYear);
        var days = (int)Math.Floor(totalDays);
        Func<int, string> sIfPlural = value =>
            value > 1 ? "s" : string.Empty;
        if (years > 0)
        {
            builder.AppendFormat(
                CultureInfo.InvariantCulture,
                "{0} year{1}",
                years,
                sIfPlural(years));
            if (days > 0)
            {
                builder.Append(" ");
            }
        }
        if (days > 0)
        {
            builder.AppendFormat(
                CultureInfo.InvariantCulture,
                "{0} day{1}",
                days,
                sIfPlural(days));
        }
        var length = builder.ToString();
        return length;
    }
}
有没有更简洁的方法(但仍然可读)?