У меня есть метод GetAllReportGroups, в котором я только что возвращал IEnumerable, но в обзоре кода мне сказали НЕТ, измените его!Проблема с преобразованием IEnumerable в список
Итак, теперь, когда я создал больше классов, которые я «думал», этот ReportGroupMaster будет подходящим типом возврата, я получаю эту ошибку. Я больше не использую IEnumerable, так что это запутывает меня.
Не может неявно преобразовать тип 'System.Collections.Generic.IEnumerable <> Элементы, внутр Id, Int SortOrder, Int Тип >>' в 'System.Collections.Generic.List. Явное преобразование существует (вы отсутствует бросок?)
Метод:
public List<ReportGroupMaster> GetAllReportGroups(string language)
{
List<ReportGroup> reportGroups = _envyUnitOfWork.ReportGroupsAll.GetAll().ToList();
List<ReportDefinition> reportDefinition = _envyUnitOfWork.ReportDefinitions.GetAll().ToList();
List<TraxReport> traxReports = _envyUnitOfWork.TraxReports.GetAll().ToList();
List<ReportGroupItem> reportGroupItems = reportGroups.Select(reportGroup => new ReportGroupItem() {Id = reportGroup.Id, ReportGroupName = reportGroup.ReportGroupName, SortOrder = reportGroup.SortOrder, Type = (int) ReportTypeNames.ReportGroup}).ToList();
//List<ReportGroupMaster> reportGroupItems = reportGroups.Select(reportGroup => new ReportGroupMaster() {Id = reportGroup.Id, ReportGroupName = reportGroup.ReportGroupName, SortOrder = reportGroup.SortOrder, Type = (int) ReportTypeNames.ReportGroup}).ToList();
var query = from d in reportGroupItems
join r in reportDefinition on d.Id equals r.ReportGroupID into items
join cr in traxReports on d.Id equals cr.ReportGroupID into customItems
orderby d.SortOrder
select new
{
d.ReportGroupName,
items = items.Select(r => new
{
r.Id,
r.ReportGroupName,
r.SortOrder,
r.ReportGroupID,
r.Type// = (int) ReportTypeNames.ReportDefinition //r.Type
}).Concat(customItems.Select(cr => new
{
cr.Id,
cr.ReportGroupName,
cr.SortOrder,
cr.ReportGroupID,
cr.Type// = 4 //(int) ReportTypeNames.TraxReport //cr.Type
})).OrderBy(e => e.SortOrder).ToList(),
d.Id,
d.SortOrder,
d.Type
};
return query;
}
Любые мысли?
ReportGroupMaster
public class ReportGroupMaster
{
public string ReportGroupName { get; set; }
public List<ReportGroupChild> Items { get; set; }
public int Id { get; set; }
public int SortOrder { get; set; }
public int Type { get; set; }
}
ReportGroupChild
public class ReportGroupChild
{
public int Id { get; set; }
public string ReportGroupName { get; set; }
public int SortOrder { get; set; }
public int ReportGroupID { get; set; }
public int Type { get; set; }
}
«Я просто возвращая IEnumerable, но в обзоре кода мне сказали НЕТ, изменить его» - почему? Любое объяснение? Также прочитайте этот вопрос: http://stackoverflow.com/questions/34334363/is-returning-ilistt-worse-than-returning-t-or-listt/ – Dennis
Предполагая, что ваше преобразование верное, вам не хватает '.ToList () ' –
Где я могу поставить .ToList()? –