我剛剛有這個問題,我自己和谷歌搜索沒有幫助。我想出了修復代碼的最簡單方法。只需在.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