我刚刚有这个问题,我自己和谷歌搜索没有帮助。我想出了修复代码的最简单方法。只需在.Count()之前添加一个.ToList(),它就可以正常工作。
<% foreach(var x in Albums){%>
<h1><%= x.Title %></h1>
<p><%= x.Photos.ToList().Count() %> </p>
<%}%>
集合中的集合尚未评估,所以你不能得到它的计数。我猜这是为了节省执行时间,以防你不使用内部集合。
例如:因为没有在其上的.toList()
var result = (from tsk in db.Tasks
where tsk.result == "Success"
orderby tsk.data_end descending
select new
{
tsk.data_end,
//here's an inner collection
nodes = (from err in db.Errors
where err.QueryEnd == tsk.data_end
select err.NodeName).Distinct()
}).ToList();
result.nodes尚未进行评估。如果你尝试添加这个,它会抛出一个异常。
result.nodes [0] .Count()会引发错误。
result.nodes [0] .ToList()。COUNT()将成功。
,我认为这会工作,但我需要改变垫层模型。我使用演示模型。在我的演讲模式,我有这个 公共类AlbumViewModel { 公开名单 MyAlbums {获取;集:}} 内每张专辑有照片。看起来我不能从我正在迭代的集合中进行任何Linq扩展操作。只是没有看到原因。 –
dritterweg
2010-02-10 18:10:14
你只需要改变你的模型就可以添加一个'int'属性(对于count)。至于为什么,我认为还有更多的代码没有在这里展示给我们。 “物化查询结果?”你的标签说EF,但这听起来像L2S给我。 – 2010-02-10 18:14:24