I have a custom extension method "ToSelectList" and I am currently using it like so:
var myList = await _myService.GetItems();
var mySelectList = myList.ToSelectList(nameof(MyEntity.Id));
That's fine and works great, however, I tried to do this as one line:
var myList = await _myService.GetItems().ToSelectList(nameof(MyEntity.Id));
But I get:
'Task<List<MyEntity>>' does not contain a definition for 'ToSelectList'
and no extension method 'ToSelectList' accepting a first argument of type
'Task<List<MyEntity>>' could be found (are you missing a using directive
or an assembly reference?)
My ToSelectList method is as follows:
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace MyProject.Extensions
{
public static class ListExtensions
{
public static List<SelectListItem> ToSelectList<T>(this List<T> list, string id, string text = "Name")
{
var selectListItems = new List<SelectListItem>();
list.ForEach(item =>
{
selectListItems.Add(new SelectListItem
{
Text = item.GetType().GetProperty(text).GetValue(item).ToString(),
Value = item.GetType().GetProperty(id).GetValue(item).ToString()
});
});
return selectListItems;
}
}
I tried changing method signature to public async static Task<List<SelectListItem>>
but no joy.