是否有某种方法可以检测使用LINQ(在本例中为Objects)构建的枚举是否已实现?除了试图检查底层集合的类型?
具体来说,由于enumerable.ToArray()
将构建一个新数组,即使底层集合已经是一个数组,我也在寻找一种方法来避免在同一个集合上调用ToArray()
两次。
答案 0 :(得分:1)
枚举不会拥有“基础集合”,它将成为集合。尝试将其转换为一个并使用结果参考:
var coll = enumerable as ICollection<T>;
if (coll != null) {
// We have a collection!
}
答案 1 :(得分:0)
检查“是IEnumerable”可以做到这一点,没有其他办法。但是,您可以不对返回类型使用“var”声明 - 因为它“隐藏”了您的类型。如果你声明一个显式的IEnumerable,那么编译器会告诉你这是否是返回的内容。