2012-08-05 50 views
1

问题: 任何人都可以告诉我如何在linq中返回值。 我想返回一个RadToolBarButtons集合,并在创建时为它们赋值。在linq中的yield返回foreach

代码: 我试图在两个方面:

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

错误11无法隐式转换类型 '无效' 到 '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>'。一个显式转换存在(是否缺少强制转换?)

回答

3

您应该使用Select而不是ForEach,它确实你在找什么。

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

我不知道,如果内ToList是必要的,你可以逃脱一Cast<T>代替物化中间列表。

+0

哦,谢谢它的工作。 :) – Wajahat 2012-08-05 11:02:14

0

使用Select,而不是ForEach,它会做yield returm