大家好,我是Asp.net的新手,所以我在这里有个问题。我想要做的是使用分组依据并计入我的Viewbag。
下面的代码还可以,但我需要计数功能。
ViewBag.details= db.Items
.Where(x => x.Title.StartsWith(title)).GroupBy(a => a.UserId)
.Select(g => g.FirstOrDefault())
.OrderBy(b => b.Users.State)
.ToList();
所以代码就像:
伦敦 中国 日本
但我需要单独计算:
伦敦(2) 中国(6) 日本(5)
非常感谢。费尔南多。
答案 0 :(得分:0)
调用GroupBy
后,您会得到一系列组 - IEnumerable<Grouping>
,其中每个分组本身都会公开用于创建组的Key
,并且它还包含一个IEnumerable,无论是哪个项目都是在原始数据集中。您只需在该分组上调用Count()
即可获得小计。
然而,您的OP中缺乏任何具体模型会导致这里出现崎岖不平的道路,所以最好的估计值占上风,我觉得这应该会带你到处。
行动(和代码)胜于雄辩:
ViewBag.details = db.Items
.Where(x => x.Title.StartsWith(title))
.GroupBy(a => a.Users.State)
.Select(n => new
{
Location = n.Key,
Entity = n.FirstOrDefault(),
LocationCount = n.Count()
})
.OrderBy(n => n.Location)
.ToList();
未经测试且可能是iffy(Users.State看起来可能有问题)。全班结构可以立即清除雾气。
[edit] - 注意到原始代码将FirstOrDefault()实体添加到结果中,因此修改为包括在内。