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

本文关键字:对象 动态 元素 Except 何获取 获取 Enumerable 返回 | 更新日期: 2023-09-27 18:26:25

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

外观:

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

当我尝试这样做时:

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

我得到了运行时错误"object不包含Count的定义",那么,我如何才能得到元素的数量?

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

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);