我有一个查询,其中包含一系列活动。 - 每个活动可以在多个国家/地区完成,因此活动具有ActivityCountries的子集合。 -Each ActivityCountry与Country表关联,以便我获取Country Name。 -Each Activity有一个名为BudgetTotal的字段。
我需要一个在ActivityCountries子集合中的CountryCode上分组的集合,并按分组的国家/地区返回Sum(BudgetTotal)和CountryName。 我从我的活动列表开始(由于页面上的过滤器,这个列表可能会更改,这就是我想重新使用此集合的原因)。
var activities = GetFilteredActivities();
然后我尝试通过获取所有Activities和ActivityCountries的列表来简化它
var countries = activities.SelectMany(a => a.ActivityCountries);
然后我尝试按CountryCode对它们进行分组并返回CountryName和Sum(BudgetTotal)。这是我遇到问题的地方。 我试过了:
var b = countries.GroupBy(g => g.CountryCode)
.Select new
{
CountryName = <something>.Country.CountryName,
Total = Sum(<something>.BudgetTotal)
}
我意识到这不起作用,但我想弄清楚如何从这里获取国家名称和总和(BudgetTotal)。我还必须在Sum(BudgetTotal)上使用OrderByDescending。我见过很多例子,但没有一个能满足我的需要。
答案 0 :(得分:1)
你很亲密......
var b = countries
.GroupBy(c => c.CountryCode)
.Select(g => new
{
CountryName = g.First().Country.CountryName, // assuming that there is 1 country code per country name
Total = g.Sum(x => x.BudgetTotal)
})
.OrderByDescending(c => c.Total);