2017-02-23 17 views
1

根据MSDN上的文档,FindItemsResults实现了IEnumerable。它有一个名为Items的属性,它实现了ICollection。不过,我无法在文档中的任何位置找到集合中的项目是否与遍历FindItemsResults对象时看到的项目相同。这些项目是否相同?遍历FindItemsResults和FindItemsResults.Items有什么区别?

如果是,为什么FindItemsResults甚至有Items属性?为什么不直接实施ICollection,而不打扰财产?

+0

我假设遍历基础对象并不立即实现结果,但调用'.Items'会为您提供一个包含所有内容的集合。 – DavidG

回答

1

将[Items]属性当作数组或集合,然后允许使用IEnumerable进行EF查询的简单方法来访问它们是很常见的。

FindItemsResults members是否说项目是结果。

+0

也许我不理解的东西。为什么要打扰“物品”属性?为什么不实施'ICollection'? – Daniel

+0

IEnumerable是固定大小。所以默认情况下你不能添加或删除项目。你只能迭代和查询。 ICollection没有这些限制。您不希望修改搜索结果集,因此IEnumerable是最佳默认设置。并且由于假定您将迭代结果集,因此非常适合此用途。 –