【发布时间】:2015-01-13 13:49:43
【问题描述】:
我想编写将 List 映射到新列表的通用方法,类似于 JS 的 map 方法。然后我会像这样使用这种方法:
var words= new List<string>() { "Kočnica", "druga beseda", "tretja", "izbirni", "vodno bitje" };
List<object> wordsMapped = words.Map(el => new { cela = el, končnica = el.Končnica(5) });
我知道有 Select 方法可以做同样的事情,但我需要编写自己的方法。现在我有这个:
public static IEnumerable<object> SelectMy<T>(this IEnumerable<T> seznam, Predicate<T> predicate)
{
List<object> ret = new List<object>();
foreach (var el in seznam)
ret.Add(predicate(el));
return ret;
}
我也知道我可以使用yield return,但我不能再次使用。我认为问题在于未声明的类型,编译器无法弄清楚它应该如何映射对象,但我不知道如何解决这个问题。我找到了相同类型的地图对象的所有示例和教程。
【问题讨论】:
-
你只是想给
Select写一个相同的扩展方法吗?此外,你似乎有很多奇怪的箍要跳过。不能用Select,不能用yield return...这是某种作业吗? -
为了将来参考,如果您遇到编译器错误,您应该发布它。
标签: c#