2016-04-13 24 views
0

我試圖連接列中的兩個列值,並分別選擇所有列,但我可以實現的是獲得列表內連接列沒有其他現有的列數據。當我鬆動列表內的其他列數據,因爲我是使用select來連接。如何連接List中的兩個列值?

LINQ查詢:

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

我需要的數據進行修改,像列名Name將舉行Id+Place和我得到的所有列的數據完好無損(PlaceAddress等),可以有更多。

回答

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

已經有兩個答案適用於你。但他們給你一個匿名對象的列表。

以下將給出您的自定義類的列表(而不是匿名對象)與所需的結果。

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

更新Category與類名(同一類數據是集合或與屬性名稱不同的DTO /視圖模型)。

+0

不錯,但這會'(新)'擦除現有的數據我害怕。 –