首页 > 解决方案 > LINQ 查询:具有另一个表的 Count 元素的新查询对象

问题描述

Bellow 是我要操作的 LINQ 查询

var custSelect = from m in _context.Entities
                         where m.Active == true && m.EntityTypeId == 1
                         orderby m.Name
                         select new { m.EntityId, m.Name, JobCount = _context.Jobs.Where(o => o.CustomerId == m.EntityId).Distinct().ToList().Count };

我希望能够选择一个新的选择变量作为 JobCount,它是一个整数,用于计算有多少作业附加到所述客户。然后稍后,在模型创建过程中,我希望能够通过 Count 变量进行排序。

有没有办法做到这一点?

标签: c#asp.net-mvclinq

解决方案


你可以试试这个方法,这里是现场演示

var result = (from e in entities
                  join j in jobs on e.EntityId equals j.CustomerId
                  where e.Active && e.EntityTypeId == 1
                  select new 
                  {
                      e.EntityId, 
                      e.Name,
                      j.JobId
                  }).GroupBy( p => new { p.EntityId, p.Name })
                    .Select(g => new 
                                {
                                    EntityId = g.First().EntityId, 
                                    Name = g.First().Name,
                                    JobCount = g.Count()  
                                })
                    .OrderBy(p => p.Name);

推荐阅读