创建更改列的表以删除行中的重复值

时间:2015-12-08 22:03:27

标签: c# mysql database entity-framework linq

如果标题令人困惑,请抱歉。

目前,我正在使用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
                        };
        } 

2 个答案:

答案 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()
                                           };
}