是否可以在不使用foreach语句的情况下将类型从Deal更改为DealBookmarkWrapper而将列表添加到另一个列表中?
var list = new List<IBookmarkWrapper>();
foreach (var deal in deals)
{
list.Add(new DealBookmarkWrapper(deal));
}
感谢。
答案 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;
});