LINQ Group by和count连接输出

时间:2017-12-05 18:58:37

标签: c# linq

使用此查询:

foreach(var y in items)
{
        <div>@y.fieldA => @y.FieldB</div>
}

我得到了这个输出:

3 => 2
3 => 1
2 => 2
3 => 2

我知道在LINQ中我们可以很容易地计算和分组:

foreach(var y in items.GroupBy(g => g.Field)
                      .Select(group => new {Field = group.Key, count = group.Count()}))
{
    <div>@y.Field : @y.count</div>
}

但是我怎样才能将它调整到连接输出,以便我得到这个结果:

3 => 2 : 2
3 => 1 : 1
2 => 2 : 1

1 个答案:

答案 0 :(得分:1)

使用Select投影所需的字符串,而不是投射匿名对象:

foreach(var item in items.GroupBy(g => $"{g.FieldA} => {g.FieldB}")
                         .Select(g => $"{g.Key} : {g.Count()}"))
{
    <div>@item</div>
}

对于C#6.0之前的版本:

foreach(var item in items.GroupBy(g => g.FieldA + " => " + g.FieldB)
                         .Select(g => g.Key + " : " + g.Count()))
{
    <div>@item</div>
}