如何在List中连接两个列值?

时间:2016-04-13 15:57:01

标签: c# linq

我正在尝试连接列表中的两个列值,并分别选择所有列,但我可以实现的是获取列表内的连接列而没有其他现有列数据。因为我松开列表中的其他列数据,因为我'使用select连接。

Linq查询:

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

我需要修改数据,例如列名Name将保留Id+Place,并且我将所有列数据保持原样(PlaceAddress等)可以更多

4 个答案:

答案 0 :(得分:3)

尝试这样的事情......

{{1}}

虽然你“不需要”为m.Place,m.Address等包含一个名称(Visual Studio会根据属性名称对它们进行适当的命名),但我发现它更容易阅读你保持语法一致。

答案 1 :(得分:1)

假设您要更新特定字段,可以使用foreach子句。这将更新值,而不需要调用ToList。

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

答案 2 :(得分: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)});

答案 3 :(得分:0)

已经有两个答案适合你。但他们会给你一个匿名对象列表。

下面将给出一个包含所需结果的自定义类(而不是匿名对象)的列表。

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

使用您的班级名称更新Category与数据是的集合相同的类或具有这些属性名称的其他DTO / View模型)。