У меня просто была эта проблема, и поиск в Google не помог.Я выяснил самый простой способ исправить код.Просто добавьте .ToList () перед .Count (), и он будет работать нормально.
<% foreach(var x in Albums){%>
<h1><%= x.Title %></h1>
<p><%= x.Photos.ToList().Count() %> </p>
<%}%>
Коллекция внутри коллекции еще не оценена, поэтому вы не можете получить счетчик для нее.Я предполагаю, что он пытается сэкономить время выполнения, если вы не используете внутреннюю коллекцию.
пример:
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 еще не оценен, потому что на нем нет .toList ().Если вы попытаетесь добавить это, произойдет исключение.
result.nodes [0] .Count () выдаст ошибку.
result.nodes [0] .ToList ().Count () будет успешным.