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で次のように2つのクエリを実行しています

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

Entity Frameworkを使用して、これらを1つのステートメントにマージするにはどうすればよいですか。私はここで何かが欠けていますか?

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 に答える