2012-03-01 45 views
0

如何獲取由Enumerable.Except()返回的動態對象的元素數?如何獲取由Enumerable.Except()返回的動態對象的多個元素?

看:

dynamic itensToRemove = Enumerable.Except(currentCollection, newCollection); 
dynamic itensToAdd = Enumerable.Except(newCollection, currentCollection); 

當我嘗試這樣做:

for (int i = 0; i < itensToRemove.Count(); i++) 

我得到了運行時錯誤「對象不包含計數的定義」,所以,我怎麼能我得到元素的數量?

+1

_What確實錯誤say_? – SLaks 2012-03-01 18:39:04

回答

8

dynamic不能解析擴展方法,這就是爲什麼你明確地調用了Enumerable.Except。做同樣的事情Count

// You don't want to do this on every iteration! 
int count = Enumerables.Count(itemsToRemove); 
for (int i = 0; i < count; i++) 

目前尚不清楚爲什麼你要使用在一個for循環,雖然 - 這將是比較正常的foreach循環使用它。您可能還需要考慮使用ToList,以確保您評估查詢一次

dynamic itemsToRemoveList = Enumerable.ToList(itemsToRemove); 
+0

嗯,現在我明白了。你有沒有很好的參考來學習動態元素? – 2012-03-01 18:46:21

+0

因爲我必須刪除itens,並且當我使用foreach時,循環會拋出集合被修改的錯誤。 – 2012-03-01 18:51:59

+0

@ViniciusOttoni:深入討論C#有關於動態輸入的一章:)但是在這裏使用'for'循環是一個壞主意。你沒有展示你正在從中刪除什麼,但肯定會有更好的方法來處理它。 – 2012-03-01 18:54:21

相關問題