我有一个list ,里面存的值是   Name|value,比如   中山一路|42,中山二路|34,五山路|35,五山路|56,这里面有Name一样的情况。我现在要做的是把Name一样的,value值相加,留一个值。 怎么写这个算法呢?求赐教。

解决方案 »

  1.   


    var list=new List<string>{"中山一路|42","中山二路|34","五山路|35","五山路|56"};
    var result=list.GroupBy(l=>l.Split('|')[0])
       .Select(g=>g.Key+"|"+g.Sum(m=>int.Parse(m.Split('|')[1])))
       .ToList();

      

  2.   

    var query = from x in list.Select(y => new { a = y.Split('|')[0], b = Convert.ToInt32(y.Split('|')[1]) })
                group x by x.a into g
                select new { a = g.Key, b = g.Select(y => y.b).Sum() };
      

  3.   


    Result:
    中山一路|42
    中山二路|34
    五山路|91