2014-06-30 13 views
35

Dieser Fehler wird in vielen der Dateien in meinem „Ansichten“ -Ordner passiert:System.Collections.Generic.List enthält keine Definition für ‚Select‘

‚System.Collection.GenericList‘ nicht enthalten eine Definition für ‚Select‘ ein erstes Argument vom Typ ‚System.Collections.GenericList‘ Annahme gefunden werden konnte (werden Sie fehlt eine using-Direktive oder ein Assemblyverweis?)

ich habe versucht, das Hinzufügen eine Reihe von "using System ..." und andere grundlegende Bibliotheken in der Nähe der Spitze der Datei aber diese hinzuzufügen, scheint keinem zu helfen. Diese

ist, wo der Fehler auftritt, für mich in der Linie ist, die mit .BindTo(Model.Users.Select(o => o.UserName)) beginnt:

Jede Hilfe wäre sehr geschätzt. Vielen Dank!

<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

Mit 'System.Linq' erhalten Sie Zugriff auf' Select' –

+1

Haben Sie 'using System.Linq'; – Habib

+1

klingt wie du vermisst ein 'using System.Linq' –

Antwort

90

einfach diesen Namespace hinzufügen,

using System.Linq; 
+3

Da es Razor ist, ist die Syntax eher '@ using System.Linq', oder Sie können es in der web.config innerhalb des Views-Ordners speichern. – vcsjones

+3

Ja, ich habe von ähnlichen Problemen anderer Leute über diese Lösung gelesen. Das Problem, das ich habe, ist, dass, selbst wenn ich diese Änderungen hinzufüge, der Fehler noch besteht. Ich habe sogar versucht, die Referenz manuell hinzuzufügen, indem ich die DLL selbst hinzufüge, und das scheint auch nicht viel zu helfen. Beginnen zu denken, dass vielleicht einige meiner Assemblies nicht übereinstimmende Versionen haben? Wenn ja, hat jemand irgendwelche Ideen, wie das zu beheben? – Ogreintel

21

Sie müssen den System.Linq Namespace haben Ihrer Ansicht nach nicht enthalten, da Wählen Sie eine Erweiterungsmethode ist. Sie haben ein paar Möglichkeiten, wie Sie dies tun:

Fügen Sie an der Spitze Ihrer cshtml-Datei.

Wenn Sie feststellen, dass Sie in vielen Ihrer Ansichten diesen Namensraum häufig verwenden werden, können Sie dies für alle Blick durch die web.config innerhalb Ihrer Ordner Sichten modifizieren (nicht derjenige an der Wurzel). Sie sollten ein Seiten-/Namespace-XML-Element sehen, ein neues add Kind erstellen, das System.Linq hinzufügt. Hier ein Beispiel:

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

Ich habe alles oben getan, und aus irgendeinem Grund sagt es mir, dass: "Der Typ oder Namespacename 'Linq' existiert nicht im Namespace 'System' (fehlt Ihnen eine Assembly-Referenz?)". Ich kann nicht scheinen, diese Referenz zu finden, wenn ich versuche, eine neue im Unterverzeichnis "References" hinzuzufügen. – Ogreintel

+0

Ich habe die Web-Konfiguration geändert, indem ich "System.Linq" manuell hinzugefügt habe, wie Sie oben beschrieben haben. Ich bin also nicht sicher, warum es so ist, weil es nicht so aussieht, wie es sein sollte. – Ogreintel

+0

Scheint so, als müssten Sie einen Verweis auf System.Core hinzufügen. – vcsjones

3

ich dieses Problem hatte, beim Aufruf Generic.List wie:

mylist.Select(selectFunc) 

Wo selectFunc als Expression<Func<T, List<string>>> definiert ist. Einfach geändert "Meine Liste" zu einem IQuerable anstelle von List dann erlaubte es mir, .Select zu verwenden.

Verwandte Themen