3

问题:谁能告诉我如何在 linq 中返回值。我想返回一组 RadToolBarButtons 并在创建时为其分配值。

代码:我尝试了两种方式:

IEnumerable<RadToolBarButton> collection = ContextMenuColumn.ToList()
      .ForEach(x => yield return new RadToolBarButton() { Value = x });

错误 11 无法将类型“void”隐式转换为“System.Collections.Generic.IEnumerable”

IEnumerable<RadToolBarButton> collection =
    ContextMenuColumn.SelectMany<string,IEnumerable<RadToolBarButton>>(
       x => new RadToolBarButton() { Value = x });

错误 11 无法将类型“Telerik.Web.UI.RadToolBarButton”隐式转换为“System.Collections.Generic.IEnumerable>”。存在显式转换(您是否缺少演员表?)

4

2 回答 2

5

您应该使用Select而不是ForEach,它可以满足您的需求。

IEnumerable<RadToolBarButton> collection = ContextMenuColumn.ToList()
  .Select(x => new RadToolBarButton { Value = x });

我不确定内部ToList是否是必要的,您可能能够摆脱 aCast<T>而不是实现中间列表。

于 2012-08-05T11:00:02.463 回答
1

使用Select代替ForEach,它会yield return为你做

于 2012-08-05T10:59:59.460 回答