分组依据,计数并按列表中的项目获取总计

Group By, Count and get Total by items inside list

我有一个帐户对象,例如:

public class Account
{
   public int Id { get; set; }
   public List<Elegibilities> Elegibilities { get; set; }
}

public class Elegibilities
{
   public int Id { get; set; }
   public string Label { get; set; }
   public bool Value { get; set;}
}

我的存储库returns 一个帐户列表。 List<Account>

我想对 Elegibilities 中的项目进行分组和计数,输出如下:

{
   Total: 30,
    [
       {
          Id : 1,
          Label: "Elegibility1",
          Count: 10
       },
       {
          Id : 2,
          Label: "Elegibility2",
          Count: 20
       }
    ]
}

我遇到了问题,因为它是另一个列表中的一个列表。

是否可以在单个 LINQ 查询中解决?

看起来您不需要任何与帐户相关的数据,

这为您提供了一个简单的平面列表。

var flatList = accounts.SelectMany(a => a.Elegibilities);

如果您需要将帐户相关数据包含到输出中,这可能是另一个示例。

var group = from a in accounts
            from el in a.Elegibilities
            group el by el.Id into elGroup
            select new
            {
                Id = elGroup.Key,
                Count = elGroup.Count(),
                Label = elGroup.First().Label
            };

最后您可以查看您的小组总计。

var result = new { Totals = group.Count() , Elegibilities = group.ToList() };