Переход с C# на VB.NET

359
03 августа 2021, 10:50

Пытаюсь переписать функцию с C# на язык VB.NET и столкнулся с проблемой при отладки

C#

private static List<string[]> GroupFiles(string extension, int groupNum, bool ignoreStichInName = false)
    {
        string[] filePaths = Directory.GetFiles(Directory.GetCurrentDirectory(), extension, SearchOption.TopDirectoryOnly);
        if (ignoreStichInName)
            filePaths = filePaths.Where(f => !IsStitchResult(Path.GetFileName(f))).ToArray();
        return filePaths.Select((value, index) => new { value, index }).GroupBy(x => x.index / groupNum, x => Path.GetFileName(x.value)).Select(g => g.ToArray()).ToList();
    }

VB.NET

 Public Function GroupFiles(pi_sExtension As String, pi_iGroupNum As Integer, pi_bIgnoreStichInName As Boolean) As List(Of String())
Dim l_sFilePath() As String = Directory.GetFiles(Directory.GetCurrentDirectory, pi_sExtension, SearchOption.TopDirectoryOnly)
If pi_bIgnoreStichInName Then
  l_sFilePath = l_sFilePath.Where(Function(f) Not (IsStitchResult(Path.GetFileName(f)))).ToArray
End If
Return l_sFilePath.Select(Function(value, index) {value, index}.GroupBy(Function(x) x.index / pi_iGroupNum, Function(x) Path.GetFileName(x.value)).Select(Function(g) g.ToArray().ToList))
End Function

Вылетает ошибка на Return l_sFilePath.Select

"<SelectIterator>d__7`2[System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.List`1[System.String]]]

Немного не понимаю, как правильно переписать этот Return, из за Function(value, index)

Answer 1

Переписал код таким образом и все заработало.

Private Shared Function GroupFiles(ByVal extension As String, ByVal groupNum As Integer, ByVal Optional ignoreStichInName As Boolean = False) As List(Of String())
    Dim filePaths As String() = Directory.GetFiles(Directory.GetCurrentDirectory(), extension, SearchOption.TopDirectoryOnly)
    If ignoreStichInName Then filePaths = filePaths.Where(Function(f) Not IsStitchResult(Path.GetFileName(f))).ToArray()
    Return filePaths.[Select](Function(value, index) New With {value, index}).GroupBy(Function(x) x.index / groupNum, Function(x) Path.GetFileName(x.value)).[Select](Function(g) g.ToArray()).ToList()
  End Function
READ ALSO
Хочу двойной прыжок

Хочу двойной прыжок

Пытался сделать двойной прыжок, ну или одиночный еще точно не знаю, а у меня персонаж летает, ну то есть прыгает сколько хочетУ меня уже стоит...

259
Как записать хранимую процедуру через C#

Как записать хранимую процедуру через C#

Есть несколько файлов каждый из который содержит создание ХПНеобходимо реализовать алгоритм при котором программа запускаясь ищет в БД ХП по имени...

379
Как получить имя контроллера домена

Как получить имя контроллера домена

Как получить имя текущего контроллера домена? Данный отрезок кода выводит имя домена, а мне нужно имя контроллера

179
Не работает Hello World в Visual Studio

Не работает Hello World в Visual Studio

пробовал сам сделать хелло ворлд на c#, ругается скачал с гитхаба, тоже не работает, может кто-то сталкивался с таким

163