Join a collection of strings until character limit is reached
Although @TopinFrassi's solution is death plain and simple, I would separate the fetching of the values which fit in the limit and the actual joining with the separator like so  

private static IEnumerable&lt;string&gt; FetchInRange(IEnumerable&lt;string&gt; collection, int characterLimit, int separationLength)
{

    int currentlength = -separationLength;

    foreach (var value in collection)
    {
        int length = value.Length + separationLength;
        currentlength += length;
        if (currentlength  &gt; characterLimit)
        {
            yield break;
        }

        yield return value;
    }

}
private static string Join(IEnumerable&lt;string&gt; collection, int characterLimit, string separator = ", ")
{
    return string.Join(separator, FetchInRange(collection, characterLimit, separator.Length));
}  


Each method has only one responsibility and they can be used for a wider range of separators as well.