【发布时间】:2015-04-26 06:15:20
【问题描述】:
我正在使用以下有效的代码:
IEnumerable<Tag> CreateTags()
{
var suppliers = SupplierQuery.MatchTerms(Min, Max);
foreach (var item in suppliers)
{
var text = item.Name;
var route = PageRoute.GetSupplierRoute(item.Name);
yield return new Tag(text, route);
}
}
我一直在尝试使用 IEnumerable.ForEach 扩展方法将这两个语句链接在一起,如下所示:
IEnumerable<Tag> CreateTags()
{
var suppliers = SupplierQuery.MatchTerms(Min, Max)
.ForEach(x =>
{
yield return new Tag(x.Name, PageRoute.GetSupplierRoute(x.Name));
});
}
但是,我收到一个错误 - “Yield 语句不能在匿名方法中使用” - 如果不创建新的 List<Tag> 或必须将它们分开,有什么办法可以解决这个问题?
提前致谢。
【问题讨论】:
-
没有
IEnumerable.ForEach扩展方法。你要么有一个你写的自定义扩展方法,要么你的意思是List<T>.ForEach
标签: c# asp.net linq anonymous-types yield