昔ながらの書き方で最も効率的な方法は何ですか?
StringBuilder sb = new StringBuilder();
if (strings.Count > 0)
{
foreach (string s in strings)
{
sb.Append(s + ", ");
}
sb.Remove(sb.Length - 2, 2);
}
return sb.ToString();
...LINQ で?
ベストアンサー1
この回答は、Aggregate
質問で要求されたLINQ()の使用法を示しており、日常的な使用を意図したものではありません。これはを使用していないため、StringBuilder
非常に長いシーケンスではパフォーマンスがひどくなります。通常のコードでは、String.Join
他の答え
集計クエリは次のように使用します。
string[] words = { "one", "two", "three" };
var res = words.Aggregate(
"", // start with empty string to handle empty list case.
(current, next) => current + ", " + next);
Console.WriteLine(res);
出力は次のようになります:
、 1 2 3
集計は、値のコレクションを受け取り、スカラー値を返す関数です。T-SQLの例には、min、max、sumなどがあります。VBとC#はどちらも集計をサポートしています。VBとC#はどちらも集計を拡張メソッドとしてサポートしています。ドット表記法を使用すると、IEnumerable物体。
集計クエリはすぐに実行されることに注意してください。
詳しくは -MSDN: 集計クエリ
本当に使いたいのであれば、コメントで提案されているAggregate
バリアントを使用してください。StringBuilder
コードモンキーキングString.Join
これは、多数のオブジェクトに対して優れたパフォーマンスを発揮する通常のコードとほぼ同じです。
var res = words.Aggregate(
new StringBuilder(),
(current, next) => current.Append(current.Length == 0? "" : ", ").Append(next))
.ToString();