当表达式转换为linq表达式时,索引超出范围

cpo*_*ign 5 linq ienumerable

我正在从userGroupsRepository创建一个选择列表项的集合.我知道有两条记录.

有什么我做错了吗?

起初我写了下面的代码,因为我认为这是一个更快的方式来获取我的选择列表项集合,其中我有"this._userGroupRepository.All"作为IQueryable

我的收藏是:

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

然而,这个实现结果

指数超出范围.必须是非负数且小于集合的大小.参数名称:index

在这里,我有我的集合实现,并将其重写为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()});
            }
Run Code Online (Sandbox Code Playgroud)

Str*_*ior 1

对你的 Queryable 进行枚举有帮助吗?

this._userGroupRepository.All.AsEnumerable().Select(
Run Code Online (Sandbox Code Playgroud)