1. ホーム
  2. c#

[解決済み] LINQを使用してList<string>内のすべての文字列を結合する

2022-03-16 15:53:26

質問

を連結するための簡単なLINQ表現はありますか? List<string> コレクションアイテムを1つの string をデリミタ文字として使用できますか?

の代わりにカスタムオブジェクトのコレクションを使用する場合はどうなりますか? string ? を連結する必要があるとします。 object.Name .

解決方法は?

警告 - パフォーマンスに関する深刻な問題

この回答は望ましい結果をもたらしますが、他の回答に比べてパフォーマンスが低いという問題があります。使用を決定する際は、十分に注意してください。


LINQを使うことで、うまくいくはずです。

string delimiter = ",";
List<string> items = new List<string>() { "foo", "boo", "john", "doe" };
Console.WriteLine(items.Aggregate((i, j) => i + delimiter + j));

クラスの記述です。

public class Foo
{
    public string Boo { get; set; }
}

使用方法

class Program
{
    static void Main(string[] args)
    {
        string delimiter = ",";
        List<Foo> items = new List<Foo>() { new Foo { Boo = "ABC" }, new Foo { Boo = "DEF" },
            new Foo { Boo = "GHI" }, new Foo { Boo = "JKL" } };

        Console.WriteLine(items.Aggregate((i, j) => new Foo{Boo = (i.Boo + delimiter + j.Boo)}).Boo);
        Console.ReadKey();

    }
}

そして、これが私のベストです :)

items.Select(i => i.Boo).Aggregate((i, j) => i + delimiter + j)