我需要一种方法来创建一个IEnumerable的扩展方法,这将允许我返回一个SelectListItem的列表。Lambda扩展方法转换IEnumerable <T>到列表<SelectListItem>
例如
public class Role
{
public string Name {get;set;}
public string RoleUID {get;set;}
}
IEnumerable<Role> Roles = .../*Get Roles From Database*/
var selectItemList = Roles.ToSelectItemList(p => p.RoleUID,r => r.Name);
这会给我的名字是显示器,以及RoleUID作为价值SelectItemList。
重要我希望这是通用的,所以我可以使用任何两个属性创建一个对象,而不仅仅是一个类型为Role的对象。
我该怎么做?
我想象像下面
public static List<SelectItemList> ToSelectItemList<T,V,K>(this IEnumerable<T>,Func<T,V,K> k)
什么的,我明明知道是不正确的。
太容易了!哈哈,谢谢... – TheJediCowboy
值得注意的'TText'&'TValue'会因为这是'SelectListItem'属性的东西,所以始终是'string'。 –
@AlastairPitts是的,我刚刚注意到并纠正了它。最初我以为'SelectListItem'是一个泛型类型,但经过进一步的研究发现它是一个具体的MVC类型。感谢您指出! – JaredPar