VB -> C#: InvalidOperationException caused by LINQ GroupBy with multiple properties
还没有人认领这个 Issue。
评估
调研方向
从 issue 中的 QueryConverter 堆栈跟踪开始,使用多个 GroupBy 属性重现 VB LINQ 查询。跟踪与该失败相关的子查询和查询段转换。完成的标准是:重现案例在没有 InvalidOperationException 的情况下完成转换,并为分组查询生成有效的 C#。
由索引模型根据 Issue 内容生成。
描述
VB.Net input code
Public Class ConversionTest4
Private Class MyEntity
Property FavoriteNumber As Integer
Property FavoriteColor As String
Property Name As String
End Class
Private Sub BugRepro()
Dim entities As New List(Of MyEntity)
Dim result As IEnumerable(Of String) = From e In entities
Group e By e.FavoriteNumber, e.FavoriteColor Into g1 = Group
Select g1.FirstOrDefault().Name
End Sub
End Class
Erroneous output
public class ConversionTest4
{
private class MyEntity
{
public int FavoriteNumber { get; set; }
public string FavoriteColor { get; set; }
public string Name { get; set; }
}
private void BugRepro()
{
var entities = new List<MyEntity>();
var result = default
#error Cannot convert QueryExpressionSyntax - see comment for details
/* Cannot convert QueryExpressionSyntax, System.InvalidOperationException: Sequence contains more than one element
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
at ICSharpCode.CodeConverter.CSharp.QueryConverter.<ConvertSubQueryAsync>d__15.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at ICSharpCode.CodeConverter.CSharp.QueryConverter.<ConvertQueryWithContinuationAsync>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at ICSharpCode.CodeConverter.CSharp.QueryConverter.<ConvertQuerySegmentsAsync>d__12.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at ICSharpCode.CodeConverter.CSharp.QueryConverter.<ConvertClausesAsync>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at ICSharpCode.CodeConverter.CSharp.ExpressionNodeVisitor.<VisitQueryExpression>d__68.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at ICSharpCode.CodeConverter.CSharp.CommentConvertingVisitorWrapper.<ConvertHandledAsync>d__8`1.MoveNext()
Input:
From e In entities
Group e By e.FavoriteNumber, e.FavoriteColor Into g1 = Group
Select g1.FirstOrDefault().Name
*/;
}
}
Details
- Product in use: VS extension
- Version in use: 9.2.2.0
- This is a simplified repro code
- I believe this exception happens because the "Group e By" line contains multiple properties to group on.
- 主要语言
- C#
- 星标
- 914
- 派生
- 242
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
icsharpcode/CodeConverter 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
icsharpcode/CodeConverter#1271 · 1 条评论 ·
-
C# -> VB: most pattern matching fails to convert可能已有人在做 @gherards99 于 35 天前认领。 未关闭C# -> VB
难度 4/5 3-5 天 新手友好度 35/100
icsharpcode/CodeConverter#1281 ·
-
难度 3/5 1-2 天 新手友好度 55/100
icsharpcode/CodeConverter#1275 ·
-
VB -> C#: Handleres of sub properties being untracked可能已有人在做 @Igor-Tomasi 于 71 天前认领。 未关闭VB -> C#
难度 3/5 1-2 天 新手友好度 62/100
icsharpcode/CodeConverter#1273 ·
-
VB -> C#: "Group By Into" Linq queries supressing aggregations ("Into" part) in the converted code未关闭Difficult area VB -> C#
难度 3/5 1-2 天 新手友好度 74/100
icsharpcode/CodeConverter#1272 ·
查看 icsharpcode/CodeConverter 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
Volodymyr-Petrunin/Bankomaten#45 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
AvaloniaUI/Avalonia#22420 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 90/100
dotnet/SqlClient#4823 · 1 条评论 ·
维护者通常 2 天内回复
-
type/automation type/tech-debt
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
area-testing p1-recommended
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复