Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VB -> C#: Query syntax - NotImplementedException in join (ParenthesizedExpression) #936

Open
CardenInsurance opened this issue Aug 4, 2022 · 1 comment
Labels
VB -> C# Specific to VB -> C# conversion

Comments

@CardenInsurance
Copy link

The actual LINQ query that caused this error was really big, but I whittled it down using the online converter (great tool) to just this:

VB.Net input code

Public Class VisualBasicClass
    Public Sub abc()
        Using db As New PRIMEEntities
            results.AddRange(From pCurrent In db.Policies
                            Join pPrevious In db.Policies On pCurrent.Reinsurance_Year - 1 Equals pPrevious.Reinsurance_Year
                            Select Policy_ID)
        End Using
    End Sub
End Class

Erroneous output

public partial class VisualBasicClass
{
    public void abc()
    {
        using (var db = new PRIMEEntities())
        {
            results.AddRange(default
#error Cannot convert QueryExpressionSyntax - see comment for details
/* Cannot convert QueryExpressionSyntax, System.NotImplementedException: Conversion for join query clause with condition of kind 'ParenthesizedExpression' not implemented
   at ICSharpCode.CodeConverter.CSharp.QueryConverter.<>c__DisplayClass37_0.<CreateJoinAnonymousObjectKeys>b__0(ValueTuple`2 expression) in D:\GitWorkspace\CodeConverter\CodeConverter\CSharp\QueryConverter.cs:line 428
   at System.Linq.Enumerable.SelectListIterator`2.ToList()
   at ICSharpCode.CodeConverter.CSharp.QueryConverter.CreateJoinAnonymousObjectKeys(IEnumerable`1 expressions, SyntaxToken convertIdentifier) in D:\GitWorkspace\CodeConverter\CodeConverter\CSharp\QueryConverter.cs:line 414
   at ICSharpCode.CodeConverter.CSharp.QueryConverter.ConvertJoinClauseAsync(JoinClauseSyntax js) in D:\GitWorkspace\CodeConverter\CodeConverter\CSharp\QueryConverter.cs:line 0
   at ICSharpCode.CodeConverter.Common.EnumerableExtensions.YieldAsync[T](Task`1 task) in D:\GitWorkspace\CodeConverter\CodeConverter\Common\EnumerableExtensions.cs:line 0
   at ICSharpCode.CodeConverter.CSharp.QueryConverter.ConvertQueryBodyClauseAsync(QueryClauseSyntax node) in D:\GitWorkspace\CodeConverter\CodeConverter\CSharp\QueryConverter.cs:line 311
   at ICSharpCode.CodeConverter.CSharp.QueryConverter.GetQuerySegmentsAsync(Queue`1 vbBodyClauses) in D:\GitWorkspace\CodeConverter\CodeConverter\CSharp\QueryConverter.cs:line 99
   at ICSharpCode.CodeConverter.CSharp.QueryConverter.ConvertClausesAsync(SyntaxList`1 clauses) in D:\GitWorkspace\CodeConverter\CodeConverter\CSharp\QueryConverter.cs:line 48
   at ICSharpCode.CodeConverter.CSharp.ExpressionNodeVisitor.VisitQueryExpression(QueryExpressionSyntax node) in D:\GitWorkspace\CodeConverter\CodeConverter\CSharp\ExpressionNodeVisitor.cs:line 681
   at ICSharpCode.CodeConverter.CSharp.CommentConvertingVisitorWrapper.ConvertHandledAsync[T](VisualBasicSyntaxNode vbNode, SourceTriviaMapKind sourceTriviaMap) in D:\GitWorkspace\CodeConverter\CodeConverter\CSharp\CommentConvertingVisitorWrapper.cs:line 36

Input:
From pCurrent In db.Policies
                            Join pPrevious In db.Policies On pCurrent.Reinsurance_Year - 1 Equals pPrevious.Reinsurance_Year
                            Select Policy_ID
 */
);
        }
    }
}

Details

  • Product in use: e.g. both
  • Version in use: 9.0.3.0
@CardenInsurance CardenInsurance added the VB -> C# Specific to VB -> C# conversion label Aug 4, 2022
@GrahamTheCoder GrahamTheCoder changed the title VB -> C#: NotImplementedException during conversion (ParenthesizedExpression) VB -> C#: Query syntax - NotImplementedException in join (ParenthesizedExpression) Aug 4, 2022
@GrahamTheCoder
Copy link
Member

Sorry I didn't spot this when you opened it. Thanks for whittling it down to the core of the issue. Should be a pretty easy fix it's just a case of calling SkipIntoParens in the right spot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
VB -> C# Specific to VB -> C# conversion
Projects
None yet
Development

No branches or pull requests

2 participants