Simplifying ToString() implementation Any ideas?

public override string ToString() {
    string returnValue;
    if (!string.IsNullOrWhiteSpace(Country))
        returnValue = string.Format("{0}", Country);
    else
        return returnValue;

    if (!string.IsNullOrWhiteSpace(City))
        returnValue += string.Format(", city {0}", City);
    else
        return returnValue;

    if (!string.IsNullOrWhiteSpace(Street))
        returnValue += string.Format(", street {0}", Street);
    else
        return returnValue;

    if (!string.IsNullOrWhiteSpace(Block))
        returnValue += string.Format(", block {0}", Block);
    else
        return returnValue;

    if (!string.IsNullOrWhiteSpace(Building))
        returnValue += string.Format(", building {0}", Building);



    if (!string.IsNullOrWhiteSpace(Latitude) 
             &amp;&amp; !string.IsNullOrWhiteSpace(Longitude))
    returnValue += string.Format(", coordinates {0}:{1}", Latitude, Longitude);

    return returnValue;
}
I find that writing it this way makes it more maintainable and relatively efficient.

public class Information
{
    public string Country { get; set; }
    public string City { get; set; }
    public string Street { get; set; }
    public string Block { get; set; }
    public string Building { get; set; }
    public string Latitude { get; set; }
    public string Longitude { get; set; }

    private IEnumerable&lt;Tuple&lt;string[], string&gt;&gt; DataFormatPairs()
    {
        yield return Tuple.Create(new[] { Country },             "{0}");
        yield return Tuple.Create(new[] { City },                "city {0}");
        yield return Tuple.Create(new[] { Street },              "street {0}");
        yield return Tuple.Create(new[] { Block },               "block {0}");
        yield return Tuple.Create(new[] { Building },            "building {0}");
        yield return Tuple.Create(new[] { Latitude, Longitude }, "coordinates {0}:{1}");
    }
    public override string ToString()
    {
        var data = DataFormatPairs()
            .TakeWhile(p =&gt; p.Item1.All(s =&gt; !String.IsNullOrWhiteSpace(s)))
            .Select(p =&gt; String.Format(p.Item2, p.Item1));
        return String.Join(", ", data);
    }
}