5

私は今日、MVC4 のチュートリアルに取り組んでいましたが、ユーザーが以前とは異なる方法で選択を実装しているのを見ました。彼のコードは次のとおりです。

var GenreLst = new List<string>(); 

var GenreQry = from d in db.Movies 
               orderby d.Genre 
               select d.Genre; 
GenreLst.AddRange(GenreQry.Distinct()); 
ViewBag.movieGenre = new SelectList(GenreLst); 

私はそれを見て、次のように独自の方法で書き直しました。

var genres = db.Movies
            .OrderBy(m => m.Genre)
            .Select(m => m.Genre)
            .Distinct()
            .ToList();

ViewBag.MovieGenre = new SelectList(genres);

彼の GenreList 変数は他では使用されていないので、削除しました。私の主な質問は、彼が AddRange をどのように使用するかです。ToList よりも AddRange の方が優れていますか?

読んでくれてありがとう!

4

1 に答える 1

18

e.ToList<T>()内部で次のように実装されます。

return new List<T>(e);

そして、List<T>(IEnumerable<T> e)コンストラクターは実際にはthis.AddRange(e)内部的に呼び出すだけです。

言い換えると、2ビットのコードはまったく同じ方法でまったく同じことを行います。

于 2012-07-18T17:39:20.377 に答える