我的“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>
答案 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或创建另一个存储它的变量。