[解決済み] LINQを使用して文字列を連結する
2022-03-14 09:18:37
質問
昔ながらの書き方で一番効率的なのは?
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で?
どのように解決するのですか?
この回答では、LINQ (
Aggregate
のように、日常的に使用することを意図したものではありません。なぜなら、これは
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();
関連
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み] Objective-CでNSStringsを連結するためのショートカット集
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] LINQのGroup by
-
[解決済み] goで文字列の連結を効率的に行う方法
-
[解決済み] PowerShellで文字列と変数を連結する方法は?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】文字列を連結する最も効率的な方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である
-
[解決済み] 文字列配列から文字列への変換