如何获取Enumerable.Except()返回的动态对象的许多元素?

时间:2012-03-01 18:37:23

标签: c# reflection dynamic collections

如何获取Enumerable.Except()返回的动态对象的元素数量?

查找

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

当我尝试这样做时:

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

我得到了运行时错误'对象不包含Count的定义',所以,我怎么能得到元素的数量?

1 个答案:

答案 0 :(得分: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);