3
我今天正在通過一個MVC4教程,看到用戶以不同於以前的方式實現了一個選擇。他的代碼是:通過LINQ.ToList()使用List.AddRange是否有任何好處?
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更好嗎?
感謝您的閱讀!
好吧,'AddRange'可以讓你添加項目到現有的列表。 'ToList'沒有。 – 2012-07-18 17:38:40
@TimSchmelter AddRange足夠智能,可以查看範圍內正在添加的項目數量,並且足夠增加緩衝區的大小。你仍然會分配默認的大小爲10的緩衝區而不使用它,但是你不會重新分配大量的緩衝區。 – Servy 2012-07-18 17:50:17
@Servy:對不起,剛刪除我的評論。如果查詢沒有執行,它就不能查看數字,只要它可以被轉換爲「ICollection''。否則,它必須被執行和枚舉。在這種情況下,大小是未知的,並且列表可能是需要的兩倍。 –
2012-07-18 17:52:41