В последнее время я был в мире программирования на лицевой панели, но сейчас погружаюсь в C# для проекта, над которым я работаю. Я определяю некоторые из моих моделей и общей функциональности, и я получаю следующее сообщение об ошибке:не может конвертировать из IEnumerable <T> в IEnumerable <T>
Error 3 Argument 2: cannot convert from
'System.Collections.Generic.IEnumerable<T>
[c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll]' to'System.Collections.Generic.IEnumerable<T>
[c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll]'
ошибка исходит от оператора возврата в следующей функции:
public static PagedResult<T> Create<T, TEntity>(IOrderedQueryable<TEntity> query, PagedRequest pagedRequest, Func<TEntity, T> converter)
where T : class
{
var count = query.Count();
if (pagedRequest.SortInfo.Fields.Any())
{
var firstPass = true;
foreach (var sortOrder in pagedRequest.SortInfo.Fields)
{
if (firstPass)
{
firstPass = false;
query = sortOrder.Direction == SortDirection.Ascending
? query.OrderBy(sortOrder.Field) :
query.OrderByDescending(sortOrder.Field);
}
else
{
query = sortOrder.Direction == SortDirection.Ascending
? query.ThenBy(sortOrder.Field) :
query.ThenByDescending(sortOrder.Field);
}
}
}
query = (IOrderedQueryable<TEntity>) query.Skip((pagedRequest.Page - 1) * pagedRequest.PageSize).Take(pagedRequest.PageSize);
var list = new List<T>();
foreach (var entity in query)
{
list.Add(converter(entity));
}
return Create(pagedRequest, list.AsEnumerable(), count);
}
и Создать функцию:
static public PagedResult<T> Create(PagedRequest request, IEnumerable<T> data, long totalCount)
{
var result = new PagedResult<T> {Status = ResultStatus.Successful, Data = data.ToArray()};
result.Count = result.Data.Count();
result.TotalCount = totalCount;
result.Page.Index = request.Page;
result.Page.Size = request.PageSize;
if (result.Page.Size > 0)
{ result.Page.Count = (long)Math.Ceiling((double)totalCount/result.Page.Size); }
return result;
}
Похоже, что ошибка времени компиляции не исчезнет. У кого-нибудь есть идеи о том, как это исправить?
Вашей 'Create()' функция должна быть универсальной. Где еще это «Т» должно быть? Это не то же самое 'T' от другой функции' Create() '. –
Спасибо @JeffMercado. Вот и все. – mgoodric
Не могли бы вы вписать это решение в «ответ», чтобы мы и другие могли легче узнать из вашего вопроса? – Roland