Я не могу использовать IEnumerable () в .ascx? - PullRequest
2 голосов
/ 07 марта 2012

Это мой код:

protected IEnumerable<MyObject> CategoriesHotelsFiltrati;
CategoriesHotelsFiltrati.Union(CategoriesHotels.Where(o => o.Comune != null && CategoriesLocalitaSelezionate.Contains(o.Comune.UniqueID)));

сейчас, на .asxc, если я попытаюсь сделать:

<% 
    if (m_oHotelsFiltrati == null || m_oHotelsFiltrati.Count()==0)
    {
        Response.Write("hello");
    }
%>  

кажется, что он не находит .Count() метод. Это говорит кое-что об «использовании» или «сборке». Странно, с IList<> это прекрасно работает ... почему?

Ответы [ 3 ]

5 голосов
/ 07 марта 2012

Вам необходимо добавить следующую строку в файл *.ascx:

<%@ Import namespace="System.Linq" %>

См. эту ссылку для более подробной информации.

2 голосов
/ 07 марта 2012

С IList<> вы, вероятно, вызываете свойство Count (без скобок).Вы можете вызвать Count() как статический метод:

<%  
    if (m_oHotelsFiltrati == null || Enumerable.Count(m_oHotelsFiltrati)==0) 
    { 
        Response.Write("hello"); 
    } 
%>   

Я не уверен, как получить разрешение метода расширения в файле .ascx.

2 голосов
/ 07 марта 2012

.Count() - это метод расширения, на самом деле это не метод IEnumerable. Вам нужно иметь using для System.Linq, чтобы компилятор мог найти метод. (Согласно комментарию Энтони Пегрэма, вы бы использовали команду import для файла разметки.)

Он отлично работает с IList, поскольку список действительно имеет свойство Count; он не зависит от метода расширения.

...