2011-08-11 30 views
5

我正在從我的userGroupsRepository創建選擇列表項的集合。 我知道有兩個記錄。將表達式轉換爲linq表達式時索引超出範圍

有什麼我在做什麼錯?

起初,我寫了下面的代碼,因爲我認爲這是一個更快的方法讓我的選擇列表項收藏,在那裏我有「this._userGroupRepository.All」爲IQueryable的

我的收藏是:

List<SelectListItem> listItems = this._userGroupRepository.All.Select(
      userGroup => new SelectListItem() { 
            Text = userGroup.GroupName, 
            Value = userGroup.UserGroupId.ToString() 
      }).ToList(); 

此實現然而,隨着

指數結果超出範圍。必須是非負的並且小於 的大小。參數名:索引

,在這裏我有我的重寫它的foreach執行收集

List<SelectListItem> listItems = new List<SelectListItem>(); 
      foreach (UserGroup userGroup in this._userGroupRepository.All) 
      { 
       listItems.Add(new SelectListItem(){ 
               Text = userGroup.GroupName, 
               Value = userGroup.UserGroupId.ToString()}); 
      } 

回答

1

它是否有助於使您可查詢的可枚舉?

this._userGroupRepository.All.AsEnumerable().Select(