2011-03-26 5 views
0

S'il vous plaît aidez-moi à convertir ce code ci-dessous à vb.net. Je n'ai aucune idée de convertir de la méthode anonyme à vb.net. J'utilise actuellement VS2010.aider à convertir C# anonyme en 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); 
    } 

Merci d'avance.

pur C#

+0

VB.NET types anonymes sont juste 'Dim somename =' ... – BoltClock

+2

Pourquoi n'utilisez-vous une déclaration 'foreach' normale? – CodesInChaos

+0

@BoltClock: Il a dit méthode anonyme (délégué), pas de type anonyme. –

Répondre

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 requis. –

+1

vcha a mentionné qu'il a utilisé VS2010 ;-) –

+0

Grand, vous battez les autres réponses horribles par un mile. +1 –

-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; Merci pour votre réponse rapide. Je voudrais aussi demander que le code "(à partir de s dans les stockages où s.Key == sélectionnez s.Value) .ToList();" peut être utilisé dans VB.NET ou non? Je suis juste curieux là-dessus. – tong

+2

Il n'y a rien de tel que Function() Do dans VB. ça devrait juste être Sub(). De plus, les parenthèses autour de Select ne sont pas nécessaires ... –

+0

@ Meta-Knight; Pouvez-vous s'il vous plaît poster le code? – tong

-1

SharpDevelop est un IDE gratuit pour dotnet qui prend en charge plusieurs traductions automatiques de SourceCode-à-dire C# à VB.NET, IronRuby ou IronPyton

Pour votre exemple, il produit

' 
' * 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; Merci beaucoup. Je vais utiliser ce site pour traduire le code C# simple. Je pense que ça devrait aller, mais y a-t-il un convertisseur en ligne fiable? – tong

+0

Yay pour les traducteurs, mais dans ce cas, le code ne compile pas. Il devrait être Sub au lieu de Function..do. Vous devriez au moins vous assurer que le code compile! –

+3

Il ne s'agit pas d'un code VB.NET légal. Surtout le * Do * est un non-sens absolu. L'afficher est très inutile. Recommander un autre IDE juste pour que vous puissiez utiliser un mauvais traducteur le rend nuisible. Le PO pourrait passer des heures et ne pas aller n'importe où. -1. –