2013-12-18 29 views
0

Im努力尝试转换此代码。除了用Google搜索一个答案和阅读MSDN文档,我仍然无法弄清楚这一点。香港专业教育学院也看了看例子Linq C#到Vb .Net

101的Visual Basic .NET 101 C#.NET

赫斯一些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

@计算机嗯,你*可以*;) – 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中有I如果命令,在某些方面,就像三元运算符。

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()