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

时间:2012-07-18 17:36:37

标签: c#

我今天正在研究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。 AddRange比ToList更好吗?

感谢阅读!

1 个答案:

答案 0 :(得分:13)

e.ToList<T>()在幕后实现:

return new List<T>(e);

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

换句话说,两位代码完全相同,完全相同。