按列表中的项目分组、计数并获取总计

Rod*_*mes 0 c# linq

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

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;}
}
Run Code Online (Sandbox Code Playgroud)

我的存储库返回帐户列表。List<Account>

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

{
   Total: 30,
    [
       {
          Id : 1,
          Label: "Elegibility1",
          Count: 10
       },
       {
          Id : 2,
          Label: "Elegibility2",
          Count: 20
       }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

是否可以通过单个 LINQ 查询来解决?

Ali*_*eza 5

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

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

var flatList = accounts.SelectMany(a => a.Elegibilities);
Run Code Online (Sandbox Code Playgroud)

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

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
            };
Run Code Online (Sandbox Code Playgroud)

最后您可以访问您的小组总计。

var result = new { Totals = group.Count() , Elegibilities = group.ToList() };
Run Code Online (Sandbox Code Playgroud)