2013-12-18 5 views
0

Я пытаюсь преобразовать этот код. Как и поиск в Google для ответа и чтение документации MSDN, я все еще не могу это понять. Ive также рассмотрели примерыLinq C# to Vb .Net

101 для Visual Basic .Net 101 для C# .Net

Hers некоторые C# код им пытаются преобразовать:

var asciiCredentials = (from c in credentials 
       select c <= 0x7f ? (byte)c : (byte)'?').ToArray(); 

Моя попытка до сих пор:

Dim ascii = (From c In Credentials(Function(x) x= 0x7f .....) 

Но не могу понять это! Я думаю, что преобразование байтов ставит меня в затруднительное положение.

Может кто-нибудь посоветовать

+0

Я использую C# в последнее время, но необходимо сделать этот переход в ближайшее время с надеждой. Это зависит от других парней, так как я не могу иметь свои проекты с C# и отдыхать с VB .Net ;-) – Computer

+0

@Computer Ну, вы * можете *;) – Servy

+0

Хм интересно, почему кто-то решил удалить 1 голос, который у меня был для сдача в исследование и т. д. – Computer

ответ

1

Вы можете использовать If вместо условного оператора, что делает код:

Dim asciiCredentials = credentials.Select(Function(x) _ 
     If(x <= 127, Convert.ToByte(c), Convert.ToByte("?"C)))_ 
    .ToArray(); 
+0

Мальчик, было смешно, что как только вы публикуете, другие ответы изменились, чтобы использовать ваш 'IF'. – paqogomez

+1

у меня было это с самого начала, просто не хватает места, когда я скопировал почему-то – BlackICE

+0

Это не компилируется. –

0
Dim asciiCredentials = (From c In credentials Select If(c <= &H7f, CByte(c), CByte(AscW("?"C)))).ToArray() 

Взято отсюда: http://www.developerfusion.com/tools/convert/csharp-to-vb

Они, как правило, довольно хорошо преобразования.

+0

Это не компилируется. –

+0

Вы правы, ему не хватало выбора. Я поставил это, чтобы сделать ответ правильным, и я обращаюсь к сайту конверсии. Спасибо за информацию. – BlackICE

3

Помните, что Visual Basic имеет команду IIf, что в некоторых отношениях действует как оператор троичного.

Dim ascii = (From ch In s 
       Select IIf(Char.GetNumericValue(ch) < 127, Convert.ToByte(ch), Convert.ToByte("?"c))).ToArray() 

There was a comment saying this didn't compile

+0

Чтобы создать этот запрос LINQ, я загрузил VS2013, присвоил значение «s», скомпилировал его и отладил его для проверки результатов. Какую версию Visual Studio/Visual Basic вы настраиваете? (Изображение прилагается, чтобы отобразить его в отладчике.) – RomSteady

+0

Извините - я тестировал с помощью 's', аналогично используемому op (вероятно, список ). –

+0

Не проблема. Я должен был опубликовать весь свой блок кода, а не только фрагмент. – RomSteady

0
Dim asciiCredentials = (
    From c In credentials 
    Select If(c <= &H7f, CByte(c), AscW("?"c))).ToArray()