読者です 読者をやめる 読者になる 読者になる

LINQ to Objectsで、オブジェクトのプロパティのうちの一つを、カンマ区切りで連結する

C#

自分用のメモ。


以下のようなクラスがあり、Nameプロパティをカンマ区切りで連結する必要があるとします。

public class Item
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int Amount { get; set; }
}


実際のオブジェクトはこんな感じ。

var items = new List<Item>
            {
                new Item { ID = 1,  Name = "りんご", Amount = 20},
                new Item { ID = 2,  Name = "みかん", Amount = 5},
                new Item { ID = 3,  Name = "ぶどう", Amount = 10},
            };


その時に、以下のような結果を取得したいと考えています。

りんご,みかん,ぶどう


コードは以下の通り。

var result = string.Join(",", items.Select(i => i.Name));


また、Amountの値を条件として抽出する場合は、Whereメソッドを追加します。

var result = string.Join(",", items.Where(i => i.Amount > 5).Select(i => i.Name));


結果

りんご,ぶどう