分组依据,计数并按列表中的项目获取总计
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() };
我有一个帐户对象,例如:
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() };