No, no hay diferencia diferencia práctica para la implementación actual de .NET Framework de los métodos. Debido a la ejecución diferida, ambos enumerarán photos
hasta que encuentre una coincidencia y luego se detendrá. (Siempre que esto sea Linq-to-objects, otros proveedores pueden comportarse de manera diferente).
Si desea obtener nit-picky, existen pequeñas diferencias de implementación. (Puede buscarlo en las fuentes de marco):
Any
simplemente itera la colección usando foreach, donde como Where
devuelve un WhereArrayIterator
, WhereListIterator
, o una WhereEnumerableIterator
dependiendo de qué tipo de colección se pasa en I haven'. He investigado esto en profundidad, pero supongo que esto se hace para permitir que los métodos de extensión encadenados se optimicen en caso de que se use una matriz o una lista.
En otras palabras, ¿dónde Any
contiene un simple foreach
, Where
hace esto:
if (source is TSource[]) return new WhereArrayIterator<TSource>((TSource[])source, predicate);
if (source is List<TSource>) return new WhereListIterator<TSource>((List<TSource>)source, predicate);
return new WhereEnumerableIterator<TSource>(source, predicate);
Los resultados de esto deberían ser los mismos, pero como no estoy 100% seguro de si hay alguna diferencia en el rendimiento, lo dejaré ir y dejaré que alguien con una respuesta definitiva en este post lo publique. –
En Visual Studio puede investigar el IL usted mismo. Por favor, un punto de interrupción en el funktion –