Преобразование Списка <интервал> к запятой разделило строку

Избегайте наследовались, когда состав был бы легче.

, Например, я видел много как это:

public class CustomerSupportApp extends JFrame { 
     JList<Customer> customers;
     OtherBusinessComponent importantComponent;

     etc. etc

}

Это смешивает бизнес-логику с презентацией. Это только вносит изменения от трудного до невозможного.

Лучше:

public class CustomerSupportApp { 
     JList<Customer> customers;
     OtherBusinessComponent importantComponent;
     // The app HAS-A frame but not IS-A frame
     JFrame frame;
     etc. etc
}
101
задан dmr 3 February 2016 в 15:44
поделиться

6 ответов

List<int> list = ...;
string.Join(",", list.Select(n => n.ToString()).ToArray())
178
ответ дан 24 November 2019 в 04:37
поделиться
List<int> list = new List<int> { 1, 2, 3 };
Console.WriteLine(String.Join(",", list.Select(i => i.ToString()).ToArray()));
9
ответ дан 24 November 2019 в 04:37
поделиться

Для большей крутизны я бы сделал этот метод расширения на IEnumerable , чтобы он работает с любым IEnumerable:

public static class IEnumerableExtensions {
  public static string BuildString<T>(this IEnumerable<T> self, string delim = ",") {
    return string.Join(delim, self)        
  }
}

Используйте его следующим образом:

List<int> list = new List<int> { 1, 2, 3 };
Console.WriteLine(list.BuildString(", "));
4
ответ дан 24 November 2019 в 04:37
поделиться

Кажется достаточно быстрым.

IList<int> listItem = Enumerable.Range(0, 100000).ToList();
var result = listItem.Aggregate<int, StringBuilder, string>(new StringBuilder(), (strBuild, intVal) => { strBuild.Append(intVal); strBuild.Append(","); return strBuild; }, (strBuild) => strBuild.ToString(0, strBuild.Length - 1));
1
ответ дан 24 November 2019 в 04:37
поделиться

Моя "умная" запись:

        List<int> list = new List<int> { 1, 2, 3 };
        StringBuilder sb = new StringBuilder();
        var y = list.Skip(1).Aggregate(sb.Append(x.ToString()),
                    (sb1, x) =>  sb1.AppendFormat(",{0}",x));

        // A lot of mess to remove initial comma
        Console.WriteLine(y.ToString().Substring(1,y.Length - 1));

Просто не понял, как условно добавить запятую.

1
ответ дан 24 November 2019 в 04:37
поделиться

Для примерно одного миллиарда решений для немного более сложная версия этой проблемы - многие из которых медленные, содержат ошибки или даже не компилируются - см. комментарии к моей статье по этой теме:

http://blogs.msdn.com/ericlippert /archive/2009/04/15/comma-quibbling.aspx

и комментарий StackOverflow:

Задача Эрика Липперта «придирки с запятыми», лучший ответ?

6
ответ дан 24 November 2019 в 04:37
поделиться
Другие вопросы по тегам:

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