System.Collections.Generic.List不包含'Select'的定义

Ogr*_*tel 65 c# linq

我的"Views"文件夹中的许多文件都发生了此错误:

'System.Collection.GenericList'不包含'Select'的定义,可以找到接受类型'System.Collections.GenericList'的第一个参数(你是否缺少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>
Run Code Online (Sandbox Code Playgroud)

Saj*_*ran 133

只需添加此命名空间,

using System.Linq;
Run Code Online (Sandbox Code Playgroud)

  • 因为它是Razor,语法更可能是`@using System.Linq`,或者你可以将它放在View文件夹里面的web.config中. (5认同)
  • 是的,我从其他人的类似问题中读到了这个解决方案.我遇到的问题是,即使我添加了这些更改,错误仍然存​​在.我甚至尝试通过自己添加DLL手动添加引用,这似乎也没有多大帮助.开始认为我的一些组件可能有不匹配的版本?如果是这样,有没有人有任何关于如何解决这个问题的想法? (4认同)

vcs*_*nes 30

您需要System.Linq在视图中包含命名空间,因为Select是一种扩展方法.关于如何执行此操作,您有几个选项:

添加@using System.Linq到cshtml文件的顶部.

如果您发现在许多视图中经常使用此命名空间,则可以通过修改Views文件夹(而不是根文件夹)中的web.config来对所有视图执行此操作.您应该看到一个pages/namespace XML元素,创建一个add添加System.Linq 的新子元素.这是一个例子:

<configuration>
    <system.web.webPages.razor>
        <pages>
            <namespaces>
                <add namespace="System.Linq" />
            </namespaces>
        </pages>
    </system.web.webPages.razor>
</configuration>
Run Code Online (Sandbox Code Playgroud)


Joh*_*ohn 7

我遇到了这个问题,当调用Generic.List像:

mylist.Select( selectFunc )
Run Code Online (Sandbox Code Playgroud)

其中selectFunc定义为Expression<Func<T, List<string>>>。只需将“ mylist”更改为a即可IQuerableList然后它允许我使用.Select