2012-03-07 2 views
2

Это мой код:Не могу я использовать IEnumerable() на .ascx?

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<> это прекрасно работает ... почему?

ответ

5

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

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

this link см для более подробной информации.

2

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

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

+0

Умм? так как? <% @ используя System.Linq%>? Он не работает ... – markzzz

+1

@markzzz, * Импорт * при использовании непосредственно в файле презентации. –

2

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

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

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