是否可以在不使用foreach的情况下重新创建此语句?

时间:2012-09-17 14:08:25

标签: c# .net linq

  

可能重复:
  C#: Is operator for Generic Types with inheritance

是否可以在不使用foreach语句的情况下将类型从Deal更改为DealBookmarkWrapper而将列表添加到另一个列表中?

var list = new List<IBookmarkWrapper>();
foreach (var deal in deals)
{
    list.Add(new DealBookmarkWrapper(deal));
}

感谢。

4 个答案:

答案 0 :(得分:9)

如果你想要完全等价的话:

var list = deals.Select(d => new DealBookmarkWrapper(d))
                .Cast<IBookmarkWrapper>()
                .ToList();

但是,如果您只是迭代这些元素而不是真的需要List,那么您可以不再致电GetList()

答案 1 :(得分:4)

var list = deals.Select(d => new DealBookmarkWrapper(d))
                .Cast<IBookmarkWrapper>()
                .ToList();

答案 2 :(得分:3)

怎么样

 var list = deals.ConvertAll(item=>new DealBookmarkWrapper(item)); 

答案 3 :(得分:1)

问题明确要求“将列表添加到另一个列表中”,所以这个也可能很有趣:

var list = new List<IBookmarkWrapper>();  //already existing
...  
deals.Aggregate(list, (s, c) => 
                      { 
                        s.Add(new DealBookmarkWrapper(c)); 
                        return s; 
                      });