Quiero hacer una extensión IEnumerable<TSource>
que se puede convertir en IEnumerable<SelectListItem>
. Hasta ahora he estado tratando de hacerlo de esta manera:Extensión IEnumerable
public static
IEnumerable<SelectListItem> ToSelectItemList<TSource, TKey>(this
IEnumerable<TSource> enumerable, Func<TSource, TKey> text,
Func<TSource, TKey> value)
{
List<SelectListItem> selectList = new List<SelectListItem>();
foreach (TSource model in enumerable)
selectList.Add(new SelectListItem() { Text = ?, Value = ?});
return selectList;
}
¿Es esta la manera correcta de hacerlo? Si es así, ¿cómo dibujo los valores de los valores apropiados del Func<TSource, TKey>
?
También podría considerar olvidar 'selectList' y hacer' foreach (...) yield return new SelectListItem {...} ', que permite la ejecución diferida (que es más LINQ-y). – Rawling
¿por qué no solo usa Select? –
Hay muchos lugares en mi código donde llamaré esto y al mirar la función Seleccionar parece que tendría que escribir más código y luego hacerlo de esta manera. Usando Select I tendría que escribir el código para instanciar un SelectListItem en lugar de solo pasar en el Func <>. Además de usar este método, el código que maneja la transferencia a SelectListItem está encapsulado y almacenado en un área de mi código en lugar de en mi aplicación. –