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

时间:2014-06-30 18:49:09

标签: 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>

4 个答案:

答案 0 :(得分:122)

只需添加此命名空间

即可
using System.Linq;

答案 1 :(得分:25)

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

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

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

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

答案 2 :(得分:6)

我有这个问题,当调用Generic.List时:

mylist.Select( selectFunc )

其中selectFunc定义为Expression<Func<T, List<string>>>。只需将“mylist”更改为IQuerable而不是List,然后就可以使用.Select

答案 3 :(得分:1)

这个问题有点老了,但是,有一个棘手的情况也导致了这个错误:

在控制器中:

ViewBag.id = //id from querystring
List<string> = GrabDataFromDBByID(ViewBag.id).Select(a=>a.ToString());

由于以下原因,以上代码将导致此部分错误:.Select(a=>a.ToString()): 您正在将ViewBag.id传递给在编译器中不知道类型的方法,因此可能有多个具有相同名称和不同参数的方法,比如:

GrabDataFromDBByID(string)
GrabDataFromDBByID(int)
GrabDataFromDBByID(whateverType)

因此,为防止发生这种情况,请显式投射ViewBag或创建另一个存储它的变量。