我需要一种方法来创建一个IEnumerable的扩展方法,这将允许我返回一个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);
Run Code Online (Sandbox Code Playgroud)
这会给我一个SelectItemList,其中Name是显示,RoleUID是值.
重要事项我希望这是通用的,因此我可以使用对象的任何两个属性创建它,而不仅仅是Role类型的对象.
我怎样才能做到这一点?
我想象下面的东西
public static List<SelectItemList> ToSelectItemList<T,V,K>(this IEnumerable<T>,Func<T,V,K> k)
Run Code Online (Sandbox Code Playgroud)
或者其他什么,我显然知道这是不正确的.
Jar*_*Par 10
为什么不结合现有的Select和ToList方法?
var selectItemList = Roles
.Select(p => new SelectListItem { Value = p.RoleUID, Text = p.Name })
.ToList();
Run Code Online (Sandbox Code Playgroud)
如果您想将其专门放入一个方法中,那么您可以将ToSelectListItem它们定义为这两种方法的组合.
public static List<SelectListItem> ToSelectListItem<T>(
this IEnumerable<T> enumerable,
Func<T, string> getText,
Func<T, string> getValue) {
return enumerable
.Select(x => new SelectListItem { Text = getText(x), Value = getValue(x) })
.ToList();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5882 次 |
| 最近记录: |