Как преобразовать Гуид [] для Строкового представления?

Что-то как String.Join(",", new string[] { "a", "b" });, но для Guid[]

var guids = new Guid[] { Guid.Empty, Guid.Empty };

var str = /* Magic */

// str = 00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000000
8
задан BrunoLM 26 July 2010 в 18:50
поделиться

6 ответов

var str = guids.Select(g => g.ToString())
               .Aggregate((working, next) => working + "," + next);

Когда ваш список Guids начнет расти, этот метод конкатенации вызовет проблемы с производительностью. Вы можете изменить его, чтобы использовать StringBuilder:

var str = guids.Select(g => g.ToString())
               .Aggregate(new StringBuilder(),
                          (sb, str) => sb.Append("," + str),
                          sb => sb.ToString());

Оба этих способа являются сложными методами расширения LINQ. Можно также просто использовать String.Join:

var str = String.Join(",", guids.Select(g => g.ToString()).ToArray());
22
ответ дан 5 December 2019 в 04:30
поделиться

Я думал, это сработает?

StringBuilder stringBuilder = new StringBuilder();
int i = 0;
foreach (var guid in guids)
{
    stringBuilder.Append(guid.ToString());
    if (++i < guids.Length)
    { 
        stringBuilder.Append(","); 
    }
}

var str = stringBuilder.ToString();
5
ответ дан 5 December 2019 в 04:30
поделиться

, если ваша структура> = .NET 3.5


String.Join(",", (from g in guids select g.ToString()).ToArray())
1
ответ дан 5 December 2019 в 04:30
поделиться
String.Join(",", Array.ConvertAll(guids, g => g.ToString()));
1
ответ дан 5 December 2019 в 04:30
поделиться
String.Join(",", guids.Select(g => g.ToString()).ToArray());
19
ответ дан 5 December 2019 в 04:30
поделиться

.NET 4 добавил метод String.Join (разделитель строк, IEnumerable values ​​. Итак, в .NET 4 это будет работать:

String.Join(",", guids);
15
ответ дан 5 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: