2015-12-14 3 views
2

Я пытаюсь сделать простое приложение для управления записью. Я хочу получить общее количество сотрудников в отделе. У меня это до сих пор.Группа с графом ASP.NET MVC

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

Но это дает мне красную линию wiggly, в которой говорится, что мне может не хватать броска.

Не может неявно преобразовать тип System.Linq.IQueryable < AnonymousType # > в System.Collections.Generic.IEnumerable <SimpleRMA.Models.Department>. Явное преобразование существует (вы пропали без вести бросок?)

Вот мой желаемый результат:

DepartmentName | Employees 

Department1 | 4 
Department2 | 6 

Как я должен сделать это в лямбда-выражения? Благодаря

Департамента Класс:

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; } 
} 

Сотрудника Класс:

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

Обратите внимание, что вам не нужен '()' - just 'new Department {...}' отлично. –

+0

@JonSkeet Спасибо. Я всегда буду помнить об этом сейчас, когда слова происходят от самого Джона Скита :) – 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() 
Смежные вопросы