diff --git a/src/Raven.Client/Documents/Linq/LinqPathProvider.cs b/src/Raven.Client/Documents/Linq/LinqPathProvider.cs index d049a135df0b..89f77a463b99 100644 --- a/src/Raven.Client/Documents/Linq/LinqPathProvider.cs +++ b/src/Raven.Client/Documents/Linq/LinqPathProvider.cs @@ -82,7 +82,7 @@ public Result GetPath(Expression expression, bool isFilterActive = false) { var itemKey = GetValueFromExpression(callExpression.Arguments[0], callExpression.Method.GetParameters()[0].ParameterType).ToString(); - if (callExpression.Object.NodeType == ExpressionType.Parameter) + if (callExpression.Object?.NodeType == ExpressionType.Parameter) { return new Result { @@ -91,16 +91,14 @@ public Result GetPath(Expression expression, bool isFilterActive = false) Path = itemKey }; } - else + + var parent = GetPath(callExpression.Object); + return new Result { - var parent = GetPath(callExpression.Object); - return new Result - { - MemberType = callExpression.Method.ReturnType, - IsNestedPath = true, - Path = parent.Path + "." + itemKey - }; - } + MemberType = callExpression.Method.ReturnType, + IsNestedPath = true, + Path = parent.Path + "." + itemKey + }; } if (callExpression.Method.Name == "ToString" && callExpression.Method.ReturnType == typeof(string)) diff --git a/src/Raven.Client/Documents/Linq/RavenQueryProviderProcessor.cs b/src/Raven.Client/Documents/Linq/RavenQueryProviderProcessor.cs index 8c43e05125fa..2ede050eab1c 100644 --- a/src/Raven.Client/Documents/Linq/RavenQueryProviderProcessor.cs +++ b/src/Raven.Client/Documents/Linq/RavenQueryProviderProcessor.cs @@ -510,7 +510,7 @@ private bool IsMemberAccessForQuerySource(Expression node) } if (node.NodeType == ExpressionType.Parameter) return true; - if (node.NodeType == ExpressionType.Call && ((MethodCallExpression)node).Method.Name == "get_Item" && ((MethodCallExpression)node).Object.NodeType == ExpressionType.Parameter) + if (node.NodeType == ExpressionType.Call && node is MethodCallExpression callExpressionNode && callExpressionNode.Method.Name == "get_Item" && callExpressionNode.Object?.NodeType == ExpressionType.Parameter) return true; if (node.NodeType != ExpressionType.MemberAccess) return false; diff --git a/test/FastTests/Client/Query.cs b/test/FastTests/Client/Query.cs index f0fe2d20d09e..bb99267d9ef6 100644 --- a/test/FastTests/Client/Query.cs +++ b/test/FastTests/Client/Query.cs @@ -222,12 +222,12 @@ public void Query_Dictionary_Simple() { using (var newSession = store.OpenSession()) { - newSession.Store(new Dictionary { { "Name", "John" } }, "users/1"); - newSession.Store(new Dictionary { { "Name", "Jane" } }, "users/2"); - newSession.Store(new Dictionary { { "Name", "Tarzan" } }, "users/3"); + newSession.Store(new Dictionary { { "Name", "John" } }, "users/1"); + newSession.Store(new Dictionary { { "Name", "Jane" } }, "users/2"); + newSession.Store(new Dictionary { { "Name", "Tarzan" } }, "users/3"); newSession.SaveChanges(); - var queryResult = newSession.Query>() + var queryResult = newSession.Query>() .ToList(); Assert.Equal(queryResult.Count, 3); @@ -273,23 +273,20 @@ public void Query_Dictionary_With_Where_Clause() { using (var newSession = store.OpenSession()) { - newSession.Store(new Dictionary { { "Name", "John" } }, "users/1"); - newSession.Store(new Dictionary { { "Name", "Jane" } }, "users/2"); - newSession.Store(new Dictionary { { "Name", "Tarzan" } }, "users/3"); + newSession.Store(new Dictionary { { "Name", "John" } }, "users/1"); + newSession.Store(new Dictionary { { "Name", "Jane" } }, "users/2"); + newSession.Store(new Dictionary { { "Name", "Tarzan" } }, "users/3"); newSession.SaveChanges(); - - var query = newSession.Query>() - .Where(x => ((string)x["Name"]).StartsWith("J")).ToString(); - - var queryResult = newSession.Query>() + + var queryResult = newSession.Query>() .Where(x => ((string)x["Name"]).StartsWith("J")) .ToList(); - var queryResult2 = newSession.Query>() + var queryResult2 = newSession.Query>() .Where(x => ((string)x["Name"]).Equals("Tarzan")) .ToList(); - var queryResult3 = newSession.Query>() + var queryResult3 = newSession.Query>() .Where(x => ((string)x["Name"]).EndsWith("n")) .ToList(); @@ -307,13 +304,13 @@ public void Query_Dictionary_With_Where_Equality_Clause() { using (var newSession = store.OpenSession()) { - newSession.Store(new Dictionary { { "Name", "Australia" } }, "continents/1"); - newSession.Store(new Dictionary { { "Name", "Europe" } }, "continents/2"); - newSession.Store(new Dictionary { { "Name", "America" } }, "continents/3"); + newSession.Store(new Dictionary { { "Name", "Australia" } }, "continents/1"); + newSession.Store(new Dictionary { { "Name", "Europe" } }, "continents/2"); + newSession.Store(new Dictionary { { "Name", "America" } }, "continents/3"); newSession.SaveChanges(); - var queryResult = newSession.Query>() - .Where(x => ((string?)x["Name"]) == "Australia").ToList(); + var queryResult = newSession.Query>() + .Where(x => ((string)x["Name"]) == "Australia").ToList(); Assert.Equal(queryResult.Count, 1); }