2015-12-14 20 views
2

我想製作一個簡單的記錄管理應用程序。 我想獲得每個部門的總員工數。到目前爲止,我有這個。按計數ASP.NET MVC

return Context.Employees 
    .GroupBy(e => e.DepartmentID) 
    .Select(x => new { Employee = x.Count() }); 

但它給了我一個紅色的擺動線,說我可能會缺少演員。

無法隱式轉換類型System.Linq.IQueryable < AnonymousType#>到System.Collections.Generic.IEnumerable <SimpleRMA.Models.Department>。一個顯式轉換存在(是否缺少強制轉換?)

這是我想要的結果:

DepartmentName | Employees 

Department1 | 4 
Department2 | 6 

我應該怎麼做,在lambda表達式?由於

系類:

public class Department 
{ 
    public int DepartmentID { get; set; } 
    public string DepartmentName { get; set; } 
    public string Location{ get; set; } 

    public virtual List<Employee> Employees { get; set; } 
} 

Employee類:

public class Employee 
{ 
    public int EmployeeID { get; set; } 
    public string LastName { get; set; } 
    public string FirstName { get; set; } 
    public string MiddleName { get; set; } 

    public DateTime Birthday { get; set; } 
    public int DepartmentID { get; set; } 
    public virtual Department Department { get; set; } 

} 
+4

你的方法的返回類型是什麼? –

+2

什麼是*確切*錯誤信息? –

+0

'不能將類型System.Linq.IQueryable 隱式轉換爲System.Collections.Generic.IEnumerable 。存在明確的轉換(您是否缺少演員?)'@JonSkeet – Cyval

回答

1

我會建議得到了有關部門來代替。 看起來你在這裏使用EntityFramework。你爲什麼不做return Context.Departments.Include("Employees")。這將爲您提供已填寫員工的部門對象集合。您可以通過執行departmentObject.Employees.Count()來獲取每個部門中員工的數量。

+1

請注意,您不需要'()' - 只需'新部門{...}'很好。 –

+0

@JonSkeet謝謝。我會永遠記住,現在這個詞來自Jon Skeet自己:) – sachin

+0

現在它返回SimpleRMA不包含名稱的定義。 – Cyval

1

你是,如果你不使用動態關鍵字爲返回值,這是不支持的返回匿名類型。像這樣實現模型類並返回它。

public class DepartmentEmployeesModel 
{ 
    public string DepartmentName { get; set; } 
    public string Employees { get; set; } 
} 

return Context 
     .Employees 
     .GroupBy(e => e.DepartmentID) 
     .Select(x => new DepartmentEmployeesModel { DepartmentName = x.Key, Employees = x.Count() }).ToList(); 

,改變你的方法簽名

IEnumerable<DepartmentEmployeesModel> YourMethodName()