我不能在.ascx上使用IEnumerable()吗?

时间:2012-03-07 16:20:10

标签: c# .net ienumerable ilist

这是我的代码:

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 个答案:

答案 0 :(得分:5)

您需要将以下行添加到*.ascx文件中:

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

有关详细信息,请参阅this link

答案 1 :(得分:2)

.Count()是一种扩展方法,它实际上不是IEnumerable的方法。对于编译器,您需要using System.Linq来查找方法。 (根据Anthony Pegram的评论,您可以使用import命令获取标记文件。)

它适用于IList,因为列表实际上有一个属性Count;它不依赖于扩展方法。

答案 2 :(得分:2)

使用IList<>,您可能正在调用Count属性(没有括号)。您可以将Count()称为静态方法:

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

我不确定如何在.ascx文件中获得扩展方法解析。