Soru System.Collections.Generic.List 'Select' için bir tanım içermiyor


Bu hata, "Görünümler" klasörümdeki dosyaların çoğunda gerçekleşiyor:

'System.Collection.GenericList' içermez   türünün ilk argümanını kabul eden 'Select' tanımı   'System.Collections.GenericList' bulunabilir (siz misiniz?   kullanma yönergesi veya montaj referansı eksik?)

Dosyanın üst kısmına yakın bir yerde "Sistem ..." ve diğer temel kitaplıkları eklemeyi denedim, ancak bunlara eklemeye hiç gerek yok.

Benim için hatanın oluştuğu yer burası ile başlayan satırda .BindTo(Model.Users.Select(o => o.UserName)):

Herhangi bir yardım büyük takdir edilecektir. Teşekkürler!

 <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>

44
2018-06-30 18:49


Menşei


kullanma System.Linq sana erişebilir Select - D Stanley
Sende var mı using System.Linq; - Habib
eksik gibi geliyor using System.Linq - Marc Gravell♦
Ne tür Model.Users? Yazım hatası yaşadığım ve kullanmaya çalıştığımda bunu görüyordum. Sayısız olmayan bir mülk üzerinde. - xr280xr


Cevaplar:


Sadece bu ad alanını ekleyin

using System.Linq;

104
2018-06-30 18:50



Razor olduğundan, sözdiziminin daha büyük olması @using System.Linqveya View's klasörünün içinde web.config içine gömebilirsiniz. - vcsjones
Evet, diğer insanların benzer sorunlarından bu çözümü okudum. Yine de sorun şu ki, bu değişiklikleri eklediğimde bile hata hala mevcut. Ben bile kendimi DLL ekleyerek referans eklemek için çalıştım ve bu da çok yardımcı görünmüyor. Belki de birkaç derlememin uyumsuz sürümleri olduğunu düşünmeye mi başlıyorsunuz? Eğer öyleyse, bunu düzeltmek için herhangi bir fikri olan var mı? - Ogreintel


Sahip olmanız gerekir System.Linq Select, bir uzantı yöntemidir. Bunu nasıl yapacağınıza dair birkaç seçeneğiniz var:

Eklemek @using System.Linq cshtml dosyanızın başına.

Bu ad alanını genellikle birçok görünümünüzde kullanacağınızı düşünüyorsanız, bunu aşağıdakiler için yapabilirsiniz: herşey Görünümler klasörünüzün içindeki web.config dosyasını değiştirerek görünümler (root'daki değil). Bir sayfa / ad alanı XML öğesi görmeli, yeni oluşturmalısınız. add System.Linq ekleyen bir çocuk. İşte bir örnek:

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

23
2018-06-30 18:59



Yukarıdakilerin hepsini yaptım ve bir sebepten dolayı bana şunu söylüyor: "'System' ad alanında 'Linq' tipi veya ad alanı adı yok (bir montaj referansı eksik misiniz?)". Yine de "Referanslar" alt klasörüne yeni bir tane eklemeyi denediğimde bu başvuruyu bulamıyorum. - Ogreintel
Yukarıda anlattığınız gibi "System.Linq" ekleyerek web-config'u değiştirdim. Bu yüzden neden bunu yaptığından emin değilim çünkü olması gerektiği gibi görünmüyor. - Ogreintel
System.Core'a bir başvuru eklemeniz gerektiği gibi görünüyor. - vcsjones


Bu sorunu yaşadım, Generic.List çağrısında olduğu gibi:

mylist.Select( selectFunc )

SelectFunc'un nerede tanımlandığı Expression<Func<T, List<string>>>. Sadece "mylist" olmak için bir IQuerable yerine List o zaman kullanmama izin verdi .Select.


3
2018-05-04 06:43