2016-06-16 4 views
-1

Ошибка при попытке добавить qresult. Кто-нибудь может проконсультироваться/посоветуйте, как исправить/изменить мой код? благодаря не может конвертировать из System.Collections.Generic.List <> в System.Collections.Generic.IEnumerable <>не может конвертировать из System.Collections.Generic.List <> в System.Collections.Generic.IEnumerable <>

public class SystemAccessList 
{ 
    public SystemAccess SystemAccess { get; set; } 

    public List<SystemAccess> SystemAccessList { get; set; } 

    SystemDbContext db; 

public void setDbContext(PALMSConfigDbContext _db) 
    { 
     db = _db; 
    } 

    public SystemAccessList GetAccessList(SystemAccessList systemAccessList) 
    { 

    var qresult = db.tbl_SystemAccessList 
      .GroupBy(g => g.ClassID) 
      .AsEnumerable().Select(c => 
      { 
       var rr = new ResultRow { Class = c.Key }; 
       foreach (var r in db.tbl_SystemAccessList.GroupBy(gg => gg.StudentID)) 
       { 
        rr.Student[r.Key] = "N"; 
       } 
       foreach (var r in c.Where(w => w.ClassID == c.Key)) 
       { 
        rr.Student[r.StudentID] = "Y"; 
       } 
       return rr; 
      }).ToList(); 

    systemAccessList.SystemAccessList.AddRange(qresult); 
    return systemAccessList; 
} 

class ResultRow 
{ 
    public ResultRow() 
    { 
     Student = new Dictionary<string, string>(); 
    } 

    public string Class { get; set; } 

    public IDictionary<string, string> Student { get; set; } 

    public string GetHeader() 
    { 
     return Student.Aggregate("Class", (current, s) => current + "|" + s.Key); 
    } 

    public string GetSolidRow() 
    { 
     return Student.Aggregate(Class, (current, s) => current + "|" + s.Value); 
    } 
    } 

    public class SystemAccess 
    { 
     [Key] 
     public int ID { get; set; } 
     public string ClassID { get; set; } 
     public string StudentID { get; set; } 
    } 
+3

Какой тип SystemAccessList? – matt

+0

Возможно, ваш qresult возвратил другой новый список, кроме SystemAccessList, требует явного приведения, чтобы преобразовать тип qresult в SystemAccessList и добавить результаты в его диапазон. –

+0

public List <> .... Могу ли я узнать, как его преобразовать? – WolfPack

ответ

0

Ваш qresult будет типа List<ResultRow> из-за Select у вас там. List<ResultRow> также IEnumerable<ResultRow>, который (когда я предположить ResultRow является ссылочным типом (class)) по очереди является IEnumerable<Xxx> для любого Xxx, что является либо базовым классом ResultRow, или интерфейс, который реализует ResultRow.

Ваш SystemAccessList имеет тип List<SystemAccess>, у которого AddRange метод, которому требуется IEnumerable<SystemAccess>.

Так что все было бы хорошо, если ResultRowбыли a SystemAccess (по наследству). Но это не так. Поэтому вы должны получить сообщение во время компиляции, так как List<ResultRow> не является IEnumerable<SystemAccess>.

+0

Да, я получил преобразование ошибки в IEnumerable <>. Могу ли я узнать, как его исправить? – WolfPack

Смежные вопросы