Soy bastante nuevo (bueno, REALMENTE nuevo) para los genéricos, pero me encanta la idea de ellos. Voy a tener unas listas desplegables en una vista y me gustaría una forma genérica para tomar una lista de objetos y convertirlo en una lista de SelectListItems
Cómo escribir el método de extensión genérica IEnumerable <SelectListItem>
Lo que tengo ahora:
public static IEnumerable<SelectListItem> ToSelectListItems(
this IEnumerable<SpecificObject> items, long selectedId)
{
return
items.OrderBy(item => item.Name)
.Select(item =>
new SelectListItem
{
Selected = (item.Id == selectedId),
Text = item.Name,
Value = item.Id.ToString()
});
}
el problema es que había necesidad de repetir ese código para cada desplegable, como los objetos tienen diferentes campos que representan la propiedad de la Text
SelectListItem
Aquí está lo que me gustaría lograr:
public static IEnumerable<SelectListItem> ToSelectListItem<T>(this IEnumerable<T> items, string key, string value, int SelectedId) {
// I really have no idea how to proceed from here :(
}
Cancelar eso, tenía que hacer ToSelectListItems :) –
Dan
¿Cómo podría llamar esto y, en particular utilizar el delegado 'seleccionado'? – Dan
¡Muy buena solución! – Samuel