如何在列表列中找到相同的值,并在其他行上为相同的列值连接字符串

本文关键字:其他 字符串 连接 列表 | 更新日期: 2023-09-27 17:51:03

我有一个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();

已找到解决方法:

//Recupera valores dos indices para o tipo de documento
                List<Gedi.Models.OperacoesModel.imports> valuesList = new List<Gedi.Models.OperacoesModel.imports>();
                var valuesListObj = from a in context.sistema_Documentos
                                    join b in context.sistema_Indexacao on a.id equals b.idDocumento
                                    join c in context.sistema_Indexes on b.idIndice equals c.id
                                    where a.ativo == 1
                                    select new
                                    {
                                        id = a.id,
                                        values = c.idName + ":" + b.valor
                                    };
                var çist = (from x in valuesListObj.AsEnumerable()
                            select new Gedi.Models.OperacoesModel.imports
                            {
                                id = x.id,
                                values = x.values
                            }).ToList();
                var importList = çist.GroupBy(p => p.id).Select(g => new Gedi.Models.OperacoesModel.imports
                                                                        {
                                                                            id = g.Key,
                                                                            values = string.Join(",", g.Select(p => p.values))
                                                                        }).ToList();