VB -> C#: IEnumerable linq extension methods are replaced with static Enumerable methods
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia con l'input VB.NET e confronta l'output C# generato, concentrandoti sulle catene LINQ seguite da Sum, Max, Count e Zip. Traccia il percorso di conversione per questi metodi di estensione; il lavoro è completato quando l'output preserva la sintassi delle chiamate di estensione e include tutti i parametri di tipo generico richiesti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
IEnumerable.Select is replaced with Enumerable.Select if predicate is empty. Same happens to .Zip() and .OrderBy() but not to .Where().
It seems to be depended on the extension method used afterwards, while .Sum() and .Max() cause this bug, .Count() does not.
Tested with different numeric types, resulting in the same issue.
Also one generic type parameter is missing from the methods so it does not compile, e.g. .Select needs two but only has one or .Zip needs three but only has two.
VB.Net input code
Public Class TestClass
Public Shared Sub Test()
Dim intCol = New Integer() {1, 2, 3}
Dim intCol2 = New Integer() {1, 2, 3}
Dim intColQuery = intCol.Select(Function(x) x)
Dim intColCopy = intCol.Select(Function(x) x).ToArray()
Dim intSum = intCol.Select(Function(x) x).Sum(Function(x) x)
Dim intMax = intCol.Select(Function(x) x).Max(Function(x) x)
Dim intCnt = intCol.Select(Function(x) x).Count(Function(x) x > 1)
Dim intSum2 = intCol.Select(Function(x) x).Sum()
Dim intMax2 = intCol.OrderBy(Function(x) x).Max()
Dim intCnt2 = intCol.Select(Function(x) x).Count()
Dim intSum3 = intCol.Zip(intCol2, Function(x, y) x + y).Sum()
End Sub
End Class
Erroneous output
public class TestClass
{
public static void Test()
{
int[] intCol = new int[] { 1, 2, 3 };
int[] intCol2 = new int[] { 1, 2, 3 };
var intColQuery = intCol.Select(x => x);
int[] intColCopy = intCol.Select(x => x).ToArray();
int intSum = intCol.Select(x => x).Sum(x => x);
int intMax = intCol.Select(x => x).Max(x => x);
int intCnt = intCol.Select(x => x).Count(x => x > 1);
var intSum2 = Enumerable.Select<int>((IEnumerable<int>)intCol, x => x).Sum();
var intMax2 = Enumerable.OrderBy<int>((IEnumerable<int>)intCol, x => x).Max();
int intCnt2 = intCol.Select(x => x).Count();
var intSum3 = Enumerable.Zip<int, int>((IEnumerable<int>)intCol, (IEnumerable<int>)intCol2, (x, y) => x + y).Sum();
}
}
Expected output
public class TestClass
{
public static void Test()
{
int[] intCol = new int[] { 1, 2, 3 };
int[] intCol2 = new int[] { 1, 2, 3 };
var intColQuery = intCol.Select(x => x);
int[] intColCopy = intCol.Select(x => x).ToArray();
int intSum = intCol.Select(x => x).Sum(x => x);
int intMax = intCol.Select(x => x).Max(x => x);
int intCnt = intCol.Select(x => x).Count(x => x > 1);
int intSum2 = intCol.Select(x => x).Sum();
int intMax2 = intCol.OrderBy(x => x).Max();
int intCnt2 = intCol.Select(x => x).Count();
int intSum3 = intCol.Zip(intCol2, (x, y) => x + y).Sum();
}
}
Details
- Product in use: VS extension
- Version in use: 9.2.6.0
- Lingua principale
- C#
- Stelle
- 913
- Fork
- 244
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di icsharpcode/CodeConverter
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
icsharpcode/CodeConverter#1271 · 1 commento ·
-
C# -> VB
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
icsharpcode/CodeConverter#1281 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
icsharpcode/CodeConverter#1275 ·
-
VB -> C#
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
icsharpcode/CodeConverter#1273 ·
-
VB -> C#: "Group By Into" Linq queries supressing aggregations ("Into" part) in the converted code ApertaDifficult area VB -> C#
Difficoltà 3/5 1-2 giorni Idoneità per principianti 74/100
icsharpcode/CodeConverter#1272 ·
Tutte le issue di icsharpcode/CodeConverter
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
nightscout/nocturne#1379 ·
-
release-notes in .NET 11 RC2 Apertapriority-0
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
StackExchange/StackExchange.Redis#3249 ·
-
[Feat] 조합 영역 구분선 개선 Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100