C# 如何按列表合并分组和无键值求和
例如,我有一个分组列表:C# 如何按列表合并分组和无键值求和,c#,.net,C#,.net,例如,我有一个分组列表: List<Cl> list = new List<Cl>() { new Cl() { vi = 1, vs = "q", am = 20 }, new Cl() { vi = 1, vs = "w", am = 30 }, new Cl() { vi = 2, vs = "w", am = 40 }, new Cl() { vi =
List<Cl> list = new List<Cl>()
{
new Cl() { vi = 1, vs = "q", am = 20 },
new Cl() { vi = 1, vs = "w", am = 30 },
new Cl() { vi = 2, vs = "w", am = 40 },
new Cl() { vi = 1, vs = "q", am = 50 }
};
groups = list.GroupBy(b => new { b.vi, b.vs }).ToList();
不使用字典或KeyValuePair就可以实现它吗
我将非常感谢您的帮助。您可以尝试以下方法:
class Key
{
public int Vi { get; set; }
public string Vs { get; set; }
public Key(int vi, string vs)
{
Vi = vi;
Vs = vs;
}
}
var result = groups = list.GroupBy(b => new { b.vi, b.vs })
.Select(gr=> new { Key = Key(gr.vi,gr.vs)
, Value = gr.Sum(x=>x.am)})
.ToList();
var groups = list.GroupBy(b => new { b.vi, b.vs })
.Select(g => new { g.Key, am = g.Sum(s => s.am)})
.ToList();
首先GroupBy()
,然后Sum()
向上计算各组的am
值
List<Cl> groups = list.GroupBy(b => new { b.vi, b.vs })
.Select(x => new Cl() { vi = x.Key.vi,
vs = x.Key.vs,
am = x.Sum(y => y.am) }).ToList();
List groups=List.GroupBy(b=>new{b.vi,b.vs})
.Select(x=>newcl(){vi=x.Key.vi,
vs=x.Key.vs,
am=x.Sum(y=>y.am)}).ToList();
像这样尝试:
class Key
{
public int Vi { get; set; }
public string Vs { get; set; }
public Key(int vi, string vs)
{
Vi = vi;
Vs = vs;
}
}
var result = groups = list.GroupBy(b => new { b.vi, b.vs })
.Select(gr=> new { Key = Key(gr.vi,gr.vs)
, Value = gr.Sum(x=>x.am)})
.ToList();
var groups = list.GroupBy(b => new { b.vi, b.vs })
.Select(g => new { g.Key, am = g.Sum(s => s.am)})
.ToList();