5

重複の可能性:
C#: Is operator for the Generic Types with inheritance

foreach ステートメントを使用せずに、クラス タイプを Deal から DealBookmarkWrapper に変更しながら、リストを別のリストに追加することは可能ですか?

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

ありがとう。

4

4 に答える 4

9

正確に同等のものが必要な場合:

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

ただし、要素を繰り返し処理しているだけで が本当に必要ない場合はList、 の呼び出しを省略できますGetList()

于 2012-09-17T14:09:26.783 に答える
4
var list = deals.Select(d => new DealBookmarkWrapper(d))
                .Cast<IBookmarkWrapper>()
                .ToList();
于 2012-09-17T14:09:31.833 に答える
3

どうですか

 var list = deals.ConvertAll(item=>new DealBookmarkWrapper(item)); 
于 2012-09-17T14:10:29.770 に答える
1

質問は「リストを別のリストに追加する」ことを明示的に求めているため、これも興味深いものになる可能性があります。

var list = new List<IBookmarkWrapper>();  //already existing
...  
deals.Aggregate(list, (s, c) => 
                      { 
                        s.Add(new DealBookmarkWrapper(c)); 
                        return s; 
                      });
于 2012-09-17T14:32:16.893 に答える