From 8ac785db4f20d2c392f0dbea741937c4bd5e1564 Mon Sep 17 00:00:00 2001 From: Peter Hallengreen Date: Tue, 7 Jul 2026 17:17:53 +0200 Subject: [PATCH] feat: Use JsonPropertyName in $select query path generation OData $select paths now use JsonPropertyNameAttribute values if present, matching JSON serialization names. Updated tests to expect JSON property names instead of C# property names. --- .../UnitTests/QueryBuilderQueryOptionsTests.cs | 2 +- .../ODataQueryBuilder.ExpressionParsing.cs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/PanoramicData.OData.Client.Test/UnitTests/QueryBuilderQueryOptionsTests.cs b/PanoramicData.OData.Client.Test/UnitTests/QueryBuilderQueryOptionsTests.cs index 040bd25..d9049a3 100644 --- a/PanoramicData.OData.Client.Test/UnitTests/QueryBuilderQueryOptionsTests.cs +++ b/PanoramicData.OData.Client.Test/UnitTests/QueryBuilderQueryOptionsTests.cs @@ -32,7 +32,7 @@ public void Select_WithExpression_GeneratesCorrectUrl() .BuildUrl(); url.Should().Contain("$select="); - url.Should().Contain("Id"); + url.Should().Contain("ID"); url.Should().Contain("Name"); } diff --git a/PanoramicData.OData.Client/ODataQueryBuilder.ExpressionParsing.cs b/PanoramicData.OData.Client/ODataQueryBuilder.ExpressionParsing.cs index 017878a..3e4fe8b 100644 --- a/PanoramicData.OData.Client/ODataQueryBuilder.ExpressionParsing.cs +++ b/PanoramicData.OData.Client/ODataQueryBuilder.ExpressionParsing.cs @@ -286,7 +286,8 @@ private static string GetMemberPath(MemberExpression member) while (current is MemberExpression memberExpr) { - pathStack.Push(memberExpr.Member.Name); + var jsonPropertyNameAttribute = memberExpr.Member.GetCustomAttribute(); + pathStack.Push(jsonPropertyNameAttribute?.Name ?? memberExpr.Member.Name); current = memberExpr.Expression; }