Вы можете использовать String.Join. Если у вас есть List<string>, вы можете сначала вызвать ToArray:
List<string> names = new List<string>() { "John", "Anna", "Monica" };
var result = String.Join(", ", names.ToArray());
В .NET 4 вам больше не нужен ToArray, так как есть перегрузка String.Join, которая принимает IEnumerable<string>.
Ответ 2
Вы также можете сделать это с помощью linq, если хотите
var names = new List<string>() { "John", "Anna", "Monica" };
var joinedNames = names.Aggregate((a, b) => a + ", " + b);
Хотя я предпочитаю синтаксис не linq в ответе Quartermeister, и я думаю, что Aggregate может выполнять медленнее (возможно, больше операций конкатенации строк).
Ответ 3
List<string> targets = new List<string>();
var InboxChecked = true;
var BannerChecked = false;
var EmailChecked = true;
if (InboxChecked)
{
targets.Add("Inbox");
}
if (BannerChecked)
{
targets.Add("Banner");
}
if (EmailChecked)
{
targets.Add("Email");
}
var index = 0;
if (targets.Any())
{
var aggregate = targets.Aggregate((s1, s2) =>
{
return ++index == targets.Count - 1 ? s1 + " and " + s2 : s1 + ", " + s2;
});
// aggregate.Dump();
}
// returns -> Inbox and Email