c# - 如何在列表列中查找相同的值并在其他行上连接字符串以获得相同的列值

标签 c# .net

我有一个包含 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.GroupByString.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/

相关文章:

c# - 在 C# 中模拟雷达的最佳方法是什么?

c# - 对完全依赖于第三方应用程序的服务进行单元测试

c# - 监控任务

c# - 哪个程序集执行代码?

c# - 如何创建这样的任务面板?

c# - .Net 程序集加载问题期间出现 BadImageFormatException

c# - 通过处理 NC_HITTEST 在移动控件时设置 SizeAll 光标

c# 在域驱动设计中放置业务规则

c# - 用户是否使用键盘或鼠标离开 WPF TextBox?

c# - 将 IQueryable<T> Where() 扩展为 OR 而不是 AND 关系