我想创建一个 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>
的相应值中提取值?
selectList
,改用foreach (...) yield return new SelectListItem { ... }
,这样可以实现延迟执行(更符合 LINQ 风格)。 - Rawling