2016-04-13 8 views
0

私はリスト内の2つの列の値を連結し、それぞれすべての列を選択しようとしていますが、他の既存の列のデータがないリスト内の連結された列を取得できます。連結するためにselectを使用してください。List内で2つの列の値を連結する方法は?

LINQのクエリ:

data = data.Select(m => m.Name = m.Id + m.Place).ToList(); // m=>m kindoff with concatenation 

私は(PlaceAddress、など)は、無傷Id+Placeを保持し、私はすべての列のデータを取得するデータは、列名Nameのように修正する必要があるが、さらに多くのことができます。

答えて

1

特定のフィールドを更新すると仮定すると、foreach句を使用できます。これにより、ToListも呼び出す必要なく、その場で値が更新されます。

data.ForEach(m => m.Name = m.Id + m.Place); 
+0

それはクールだ、私はあまりにも愚かで、foreachでショットをしたことさえない。乾杯 –

0

使用select new

var data2 = from c in data 
      select new 
      { 
       Name = c.Id + " " + c.Place, 
       Place = c.Place, 
       Address = c.Address 
      }; 

または:

var data3 = data.Select(c => new { c.Address, Name = string.Format("{0} {1}", c.Id, c.Place)}); 
+0

あなたの時間を感謝します。歓声 –

2

このような何かを試してみてください...

data = data.Select(m => new 
{ 
    Name = m.Id + m.Place, 
    Place = m.Place, 
    Address = m.Address, 
    etc = m.etc 
}); 

あなたは "必要が" の名前を含めることはありませんがm.Place、m.Addressなど(Visual Studioではプロパティ名に基づいて適切な名前が付けられます)、私はそれが簡単だとわかりますo構文の一貫性を保つならば、読んでください。

+0

あなたの時間を歓迎する –

0

すでに2つの回答があります。しかし、彼らはあなたに匿名のオブジェクトのリストを与えます。

以下は、匿名オブジェクトの代わりにカスタムクラス()のリストに必要な結果を示します。あなたのクラス名を持つ

var result = data.Select(m => new Category 
           { Name = m.Name = m.Id + m.Place, 
            Place = m.Place}).ToList(); 

更新Categoryデータはのコレクションまたはこれらのプロパティ名と異なるDTO /ビューモデルで同じクラス)。

+0

いいですが、これは '(新)'私は恐れている既存のデータを消去します。 –

関連する問題