C# 如何连接列表中的两个列值?

C# 如何连接列表中的两个列值?,c#,linq,C#,Linq,我试图连接列表中的两个列值,并分别选择所有列,但我所能实现的只是在列表中获得一个连接的列,而没有其他现有列数据。由于我使用选择来连接,所以我会松开列表中的其他列数据 Linq查询: data = data.Select(m => m.Name = m.Id + m.Place).ToList(); // m=>m kindoff with concatenation 我需要修改数据,如列名name将保留Id+Place,并且我可以完整地获取所有列的数据(Place,Addres

我试图连接列表中的两个列值,并分别选择所有列,但我所能实现的只是在列表中获得一个连接的列,而没有其他现有列数据。由于我使用
选择
来连接,所以我会松开列表中的其他列数据

Linq查询:

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

我需要修改数据,如列名
name
将保留
Id+Place
,并且我可以完整地获取所有列的数据(
Place
Address
,等等)。

使用
选择新的

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


使用
选择新的

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


试试这样的

data = data.Select(m => new
{
    Name = $"{m.Id} {m.Place}", // Edit to add string interpolation
    Place = m.Place,
    Address = m.Address,
    etc = m.etc
});

虽然您不“需要”包含m.Place、m.Address等的名称(Visual Studio将根据属性名称的不同适当命名),但我发现如果保持语法一致,阅读起来会更容易。

尝试类似的方法

data = data.Select(m => new
{
    Name = $"{m.Id} {m.Place}", // Edit to add string interpolation
    Place = m.Place,
    Address = m.Address,
    etc = m.etc
});

虽然您不“需要”包含m.Place、m.Address等的名称(Visual Studio将根据属性名称的不同适当命名),但我发现如果保持语法一致,阅读起来会更容易。

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

下面将列出您的自定义类(而不是匿名对象)以及所需结果

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

使用您的类名更新
Category
(数据所属的同一类或具有这些属性名的不同DTO/View模型)。

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

下面将列出您的自定义类(而不是匿名对象)以及所需结果

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

使用您的类名更新
Category
(数据是这些属性名的集合的同一类或不同的DTO/视图模型)。

假设您要更新特定字段,可以使用foreach子句。这将在不需要调用ToList的情况下更新现有的值

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

假设要更新特定字段,可以使用foreach子句。这将在不需要调用ToList的情况下更新现有的值

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

不错的一个,但这将
(新)
删除现有数据,我担心。不错的一个,但这将
(新)
删除现有数据,我担心。酷,这是一个黑客,我很傻,甚至没有给foreach一个机会。干杯,这就是我的技巧,我真是哑巴,连一枪都没打。干杯