【问题标题】:How to find same values in a list column and concatenating strings on the other rows for the same column value如何在列表列中查找相同的值并在其他行上为相同的列值连接字符串
【发布时间】:2012-12-21 10:36:12
【问题描述】:

我有一个包含 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 语句手动执行此操作的方法?

【问题讨论】:

  • 在asp.net网页的GridView控件中,可以参考DataBound事件和2个属性:DataKeys和DataKeyNames。希望对您有所帮助
  • 这是什么应用程序? ASP、WPF、WinForms、控制台?您实际使用的控件类型是什么?

标签: c# .net


【解决方案1】:

假设一个简单的结构,如...

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

【讨论】:

    【解决方案2】:

    找到了解决方法:

    //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();
    

    【讨论】:

      猜你喜欢
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多