2011-03-26 113 views
0

请帮我将下面的代码转换为vb.net。我不知道从匿名方法转换为vb.net。我目前正在使用VS2010。帮助将c#匿名转换为vb.net

public void DoWork(CustomObject obj) 
    { 
     var linq = (from s in storages 
        where s.Key == obj.Key 
        select s.Value).ToList(); 

     Action<ICustomService> act = 
      delegate(ICustomService service) 
      { 
       service.ChangeValue(obj); 
      }; 

     linq.ForEach(act); 
    } 

在此先感谢您。

纯C#开发人员

+0

VB.NET匿名类型只是'昏暗somename = ...' – BoltClock 2011-03-26 17:31:07

+2

你为什么不使用普通的'foreach'声明? – CodesInChaos 2011-03-26 17:35:08

+0

@BoltClock:他说匿名方法(委托),而不是匿名类型。 – 2011-03-26 17:59:26

回答

4
Public Sub DoWork(ByVal obj As CustomObject) 

    Dim values = (From s In storages 
       Where s.Key = obj.Key 
       Select s.Value).ToList() 

    values.ForEach(Sub(service As ICustomService) service.ChangeValue(obj)) 

End Sub 
+0

需要VS2010。 – 2011-03-26 18:04:34

+1

vcha没有提到他使用VS2010 ;-) – 2011-03-26 18:10:17

+0

太棒了,你击败了其他可怕的答案一英里。 +1 – 2011-03-26 18:13:53

-1
Public Sub DoWork(ByVal obj As CustomObject) 
    Dim linq = storage.Where(Function(s) s.Key = obj.Key).[Select](Function(s) s.Value).ToList() 

    Dim act As Action(Of ICustomService) = Sub(service As ICustomService) 
               service.ChangeValue(obj) 
              End Sub 

    linq.ForEach(act) 
End Sub 
+0

@Bala R;谢谢你的回复。我也想问一下代码“(从s存储在哪里s.Key == select s.Value).ToList();”可以在VB.NET中使用吗?我只是好奇而已。 – tong 2011-03-26 17:44:50

+2

在VB中没有Function()做的事情。它应该只是Sub()。另外,选择周围的括号不是必要的... – 2011-03-26 17:45:23

+0

@ Meta-Knight;你可以请张贴代码吗? – tong 2011-03-26 17:47:35

-1

SharpDevelop是DOTNET一个免费的IDE,支持多种自动源代码翻译即C#到VB.NET,IronRuby的或IronPyton

对于示例它生产

' 
' * Created by SharpDevelop. 
' * User: k3b 
' * Date: 26.03.2011 
' * Time: 18:44 
' * 
' * To change this template use Tools | Options | Coding | Edit Standard Headers. 
' 

Imports System 

Namespace DefaultNamespace 
    ''' <summary> 
    ''' Description of Class1. 
    ''' </summary> 
    Public Class Class1 
     Public Sub New() 
     End Sub 
     Public Sub DoWork(obj As CustomObject) 
      Dim linq = (From s In storages Where s.Key = obj.Keys.Value).ToList() 

      Dim act As Action(Of ICustomService) = Function(service As ICustomService) Do 
       service.ChangeValue(obj) 
      End Function 

      linq.ForEach(act) 
     End Sub 
    End Class 
End Namespace 
+0

@ k3b;非常感谢。我将使用此网站翻译简单的C#代码。我认为它应该没问题,但有没有可靠的在线转换器? – tong 2011-03-26 17:51:22

+0

耶译为翻译,但在这种情况下,代码只是不编译。它应该是Sub而不是Function..do。你们至少应该确保代码编译! – 2011-03-26 17:58:06

+3

这远不是合法的VB.NET代码。特别是* Do *完全是无稽之谈。发布它是非常无益的。推荐另一个IDE,以便您可以使用糟糕的翻译器使其变得有害。 OP可能会花费数小时而无法到达任何地方。 -1。 – 2011-03-26 18:03:46