2

我有一张员工表,上面有以下记录

   EmpID    Salary   Date

    10      2000     1/1/2011
    10      2000     2/1/2011
    20      2000     1/1/2011

我想计算员工总数和总工资(基于其他一些参数)

有没有一种简单的方法可以在实体框架中编写以下 SQL 查询。

  select Sum(Salary), count(distinct(EmployeeID)) from empdb.employeesalary (where clause)

有一个我需要选择这些值的类

  class EmployeeEntity
  {
       decimal TotalAmount;
       int EmployeeCount 
  }

我目前在 EF 中执行两个查询,如下所示

  objectcontext.employeesalary.Sum(c => c.Salary);
  objectcontext.employeesalary.Select(c => c.EmployeeID).Distinct().Count();

如何使用 Entity Framework 将这些合并到单个语句中。我在这里错过了什么吗?

4

2 回答 2

4

尝试这样的事情:

objectcontext.employeesalary
   .Where(c => ...)
   .GroupBy(_ => default(string))
   .Select(g => new
   {
      Sum = g.Sum(c => c.Salary),
      Count = g.Select(c => c.EmployeeID).Distinct().Count()
   });
于 2012-11-23T19:01:25.317 回答
2

这个怎么样 ?您可以将 EF 的结果合并到您的员工实体类中

   var q =  from f in objectcontext.employeesalary
             where [clause]
             group f by f.EmpID into g
             select new EmployeeEntity
             {
                 TotalAmount = g.Sum(c => c.Salary),
                 EmpmloyeeCount = g.Select(c => c.EmployeeID).Discinct().Count()
             }

    var EmployeeSummary = new List<EmployeeEntity>(q.ToList());
于 2012-11-23T21:08:25.433 回答