如果标题令人困惑,请抱歉。
目前,我正在使用Entity Framework和LINQ表达式进行练习并且坚持这一点。
我有一个包含列的表:“个人ID”,“姓名”,“姓氏”,“电话ID”以及电话ID上的所有值都是唯一的。我想创建另一个表,其中将有相同的列,除了最后一个是“电话计数”,它显示有多少电话与同一个人(个人ID)相关联。我希望表格只显示3个第一个最高计数行。
以下是我编写的用于制作上述表格的代码。
using (var db = new PRDatabaseEntities())
{
var query = from a in db.Person
join t in db.Repairs on a.PID equals t.Repairman_PID
orderby a.PID
select new
{
a.PID,
a.Name,
a.Surname,
t.Phone_ID
};
}
答案 0 :(得分:1)
您可以通过LINQ查询尝试使用以下组:
// First, generate a linq query
var query = from a in Persons
join t in Repairs on a.PID equals t.Repairman_PID
group new { a, t } by new { a.PID, a.Name, a.Surname } into g
select new
{
PID = g.Key.PID,
Name = g.Key.Name,
Surname = g.Key.Surname,
PhoneCount = g.Count()
};
// Then order by PhoneCount descending and take top 3 items
var list = query.OrderByDescending(t => t.PhoneCount).Take(3).ToList();
答案 1 :(得分:0)
试试这个:
using (var db = new PRDatabaseEntities())
{
var query = db.Person
.GroupJoin(db.Repairs,
p => p.PID, r => r.PID,
(p, r) => new {
PID = p.PID,
Name = p.Name,
Surname = p.Surname,
Count = r.Count()
};
}