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

谢谢阅读!

最佳答案

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

return new List<T>(e);

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

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

关于c# - 通过LINQ.ToList()使用List.AddRange有什么好处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11547143/

10-09 00:05