我想制作一个 IEnumerable<TSource>
可以将自身转换为 IEnumerable<SelectListItem>
的扩展.到目前为止,我一直在尝试这样做:
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;
}
这样做正确吗?如果是这样,我如何从 Func<TSource, TKey>
中的适当值中提取值? ?
最佳答案
您正在重新发明轮子。是什么Enumerable.Select用于。
@KeithS 编辑:要回答这个问题,如果您想要此输出,您可以定义一个包装 Enumerable.Select 的扩展方法:
public static IEnumerable<SelectListItem> ToSelectItemList<TSource>(
this IEnumerable<TSource> enumerable,
Func<TSource, string> text,
Func<TSource, string> value)
{
return enumerable.Select(x=>new SelectListItem{Text=text(x), Value=value(x));
}
关于c# - IEnumerable 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10799319/