gpt4 book ai didi

c# - 如何编写通用 IEnumerable 扩展方法

转载 作者:可可西里 更新时间:2023-11-01 08:02:48 24 4
gpt4 key购买 nike

我对泛型相当陌生(好吧,真的很陌生),但我喜欢它们的想法。我将在一个 View 上有几个下拉列表,我想要一种通用的方法来获取对象列表并将其转换为 SelectListItems

列表

我现在拥有的:

public static IEnumerable<SelectListItem> ToSelectListItems(
this IEnumerable<SpecificObject> items, long selectedId)
{
return
items.OrderBy(item => item.Name)
.Select(item =>
new SelectListItem
{
Selected = (item.Id == selectedId),
Text = item.Name,
Value = item.Id.ToString()
});
}

问题是,我需要为每个下拉菜单重复该代码,因为对象具有不同的字段,代表 SelectListItemText 属性

这是我想要完成的:

public static IEnumerable<SelectListItem> ToSelectListItem<T>(this IEnumerable<T> items, string key, string value, int SelectedId) {
// I really have no idea how to proceed from here :(
}

最佳答案

好吧,你可以这样做:

public static IEnumerable<SelectListItem> ToSelectListItems(
this IEnumerable<T> items,
Func<T,string> nameSelector,
Func<T,string> valueSelector,
Func<T,bool> selected)
{
return items.OrderBy(item => nameSelector(item))
.Select(item =>
new SelectListItem
{
Selected = selected(item),
Text = nameSelector(item),
Value = valueSelector(item)
});
}

关于c# - 如何编写通用 IEnumerable<SelectListItem> 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2389328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com