2011-03-26 94 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