Подтвердить что ты не робот

System.Collections.Generic.List не содержит определения для 'Select'

Эта ошибка происходит во многих файлах моей папки "Представления":

'System.Collection.GenericList' не содержит определение "Выбрать", принимающее первый аргумент типа "System.Collections.GenericList" можно найти (вы отсутствует директива using или ссылка на сборку?)

Я попробовал добавить кучу "using System..." и других базовых библиотек в верхней части файла, но добавление их, похоже, не помогает.

Здесь ошибка возникает для меня в строке, начинающейся с .BindTo(Model.Users.Select(o => o.UserName)):

Любая помощь будет принята с благодарностью. Спасибо!

 <div id="editRolesContainer" class="detailContainer detailContainer4">
    <header class="sectionheader"> Add Roles </header>
    <ul id = "AdminSelectUserContainer" >
       <li>
          <ul style="padding: 0 0 0 5px">
             <li>Select User : </li>
             <li>
                @using (Html.BeginForm("srch_GetUserRoles", "Admin",
                   new { view = "Users_Roles" }, FormMethod.Post,
                   new { name = "srch_GetUserRoles" }))
                {
                   @(Html.Telerik().AutoComplete()
                          .Name("acx_SelectUser")
                          .BindTo(Model.Users.Select(o => o.UserName))
                              .HtmlAttributes(new { type "submit"   })
                          .HtmlAttributes(new { @class = "SearchBox"})
                          .AutoFill(true)
                          .Filterable((filtering =>
                              {
                                 filtering.FilterMode(AutoCompleteFilterMode.Contains);
                              }))
                  )
                }
             </li>
            </ul>
           ...
           ...
           </div>
4b9b3361

Ответ 1

Просто добавьте это пространство имен,

using System.Linq;

Ответ 2

Вам нужно иметь пространство имен System.Linq, включенное в ваше представление, так как Select является методом расширения. У вас есть несколько вариантов, как это сделать:

Добавьте @using System.Linq в начало вашего файла cshtml.

Если вы обнаружите, что вы часто используете это пространство имен во многих своих представлениях, вы можете сделать это для всех просмотров, изменив web.config внутри вашей папки Views (а не в корневом каталоге). Вы должны увидеть XML-элемент страницы/пространства имен, создать новый дочерний элемент add, который добавит System.Linq. Вот пример:

<configuration>
    <system.web.webPages.razor>
        <pages>
            <namespaces>
                <add namespace="System.Linq" />
            </namespaces>
        </pages>
    </system.web.webPages.razor>
</configuration>

Ответ 3

У меня была эта проблема: при вызове Generic.List вроде:

mylist.Select( selectFunc )

Где selectFunc определяется как Expression<Func<T, List<string>>>. Просто изменил "mylist" как IQuerable вместо List, тогда он позволил мне использовать .Select.