diff --git a/Src/Newtonsoft.Json/Utilities/LinqBridge.cs b/Src/Newtonsoft.Json/Utilities/LinqBridge.cs index f24636f8..b5bdc1ba 100644 --- a/Src/Newtonsoft.Json/Utilities/LinqBridge.cs +++ b/Src/Newtonsoft.Json/Utilities/LinqBridge.cs @@ -72,7 +72,14 @@ namespace Newtonsoft.Json.Utilities.LinqBridge { CheckNotNull(source, "source"); - return CastYield(source); + var servesItself = source as IEnumerable; + if (servesItself != null + && (!(servesItself is TResult[]) || servesItself.GetType().GetElementType() == typeof(TResult))) + { + return servesItself; + } + + return CastYield(source); } private static IEnumerable CastYield(