2014-06-30 13 views
35

Questo errore sta accadendo in molti dei file nei miei "Vista" cartella:System.Collections.Generic.List non contiene una definizione per 'selezionare'

'System.Collection.GenericList' non lo fa contiene una definizione per 'selezionare' accettare un primo argomento di tipo 'System.Collections.GenericList' stato trovato (stai manca una un riferimento all'assembly direttiva using o?)

ho provato ad aggiungere un sacco di "using System ..." e altre librerie di base nella parte superiore del file ma aggiungere quelli non sembra aiutare nessuno.

Questo è dove si verifica l'errore per me è la riga che inizia con .BindTo(Model.Users.Select(o => o.UserName)):

Qualsiasi aiuto sarebbe molto apprezzato. Grazie!

<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

L'uso di 'System.Linq' consente di accedere a' Seleziona' –

+1

Si sta utilizzando 'System.Linq'; – Habib

+1

sembra che manchi un 'usando System.Linq' –

risposta

90

Basta aggiungere questo spazio dei nomi,

using System.Linq; 
+3

Poiché è Razor, è più probabile che la sintassi sia '@utilizzando System.Linq', oppure è possibile inserirla nel web.config all'interno della cartella View. – vcsjones

+3

Sì, ho letto di quella soluzione dai problemi simili di altre persone. Il problema che ho però è che anche quando aggiungo queste modifiche, l'errore esiste ancora. Ho persino provato ad aggiungere manualmente il riferimento aggiungendo la DLL da solo, e anche questo non sembra essere di aiuto. Iniziando a pensare che forse alcuni dei miei gruppi hanno versioni non corrispondenti? Se sì, qualcuno ha qualche idea su come risolverlo? – Ogreintel

21

È necessario avere il System.Linq spazio dei nomi inclusi nella vista dal Select è un metodo di estensione. Hai un paio di opzioni su come fare questo:

Aggiungi @using System.Linq all'inizio del tuo file cshtml.

Se si scopre che si prevede di utilizzare questo spazio dei nomi spesso in molti dei vostri punti di vista, si può fare questo per tutte le vista modificando il web.config all'interno della cartella Vista (non quello alla radice). Dovresti vedere un elemento XML di pagine/spazio dei nomi, creare un nuovo figlio add che aggiunge System.Linq. Ecco un esempio:

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

Ho fatto tutto quanto sopra, e per qualche ragione mi sta dicendo che: "Il tipo o il nome dello spazio dei nomi 'Linq' non esiste nello spazio dei nomi 'Sistema' (ti manca un riferimento all'assembly?)". Non riesco a trovare questo riferimento ogni volta che provo ad aggiungerne uno nuovo nella sottocartella "Riferimenti". – Ogreintel

+0

Ho modificato la web-config aggiungendo manualmente "System.Linq" come hai descritto sopra. Quindi non sono sicuro del motivo per cui lo sta facendo perché non sembra che dovrebbe essere. – Ogreintel

+0

Sembra che sia necessario aggiungere un riferimento a System.Core. – vcsjones

3

ho avuto questo problema, Quando si chiama Generic.List come:

mylist.Select(selectFunc) 

Dove selectFunc è definito come Expression<Func<T, List<string>>>. Semplicemente modificato "mylist" per essere un IQuerable anziché List quindi mi ha permesso di usare .Select.

Problemi correlati