我有一个包含 2 列的列表,其结构如下:
50 process:3333
50 phone:xxxx
51 process:2222
51 phone:yyyy
我需要基于第一个具有以下结构的列表构建一个新列表:
50 process:3333,phone:xxxx
51 process:2222,phone:yyyy
List 是否有任何方法可以从一列中查找相同的值并将该字符串连接到第二列。
或者我必须找到一种方法来使用 foreach 或 while 语句手动执行此操作?
最佳答案
假设一个简单的结构,例如...
public struct Proc
{
public int ID { get; set; }
public string Value { get; set; }
}
使用您的示例数据:
var procList = new List<Proc>() {
new Proc{ID=50,Value="process:3333"},new Proc{ID=50,Value="phone:xxxx"},
new Proc{ID=51,Value="process:2222"},new Proc{ID=51,Value="phone:yyyy"},
};
您可以使用Enumerable.GroupBy
和String.Join
:
var procIdGroupList = procList
.GroupBy(p => p.ID)
.Select(g => new Proc
{
ID = g.Key,
Value = string.Join(",", g.Select(p => p.Value))
}).ToList();
<强> DEMO
关于c# - 如何在列表列中查找相同的值并在其他行上连接字符串以获得相同的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14200346/