在LINQ.ToList()上使用List.AddRange有什么好处吗?

我今天正在研究MVC4教程,看到用户以不同于我以前的方式实现了一个选择。 他的代码是:

var GenreLst = new List(); 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。 AddRange比ToList更好吗?

谢谢阅读!

e.ToList()在引擎盖下实现:

 return new List(e); 

List(IEnumerable e)构造函数实际上只是在内部调用this.AddRange(e)

换句话说,两位代码将以完全相同的方式完成相同的操作。