RegistryKey,Linq

  • VB.NET
  • .NET (FX) 4.0

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Trade.

    RegistryKey,Linq

    Heyo
    Ich hab einen code von c# in vb converted und komm nicht weiter :/
    Hier der error:
    Spoiler anzeigen

    Quellcode

    1. Fehler 3 Der Lambda-Parameter "k" verbirgt eine Variable in einem einschließenden Block, eine zuvor definierte Bereichsvariable oder eine implizit im Abfrageausdruck deklarierte Variable. F:\File\Dokumente\Visual Studio 2010\Projects\4sAdmin_tool\4sAdmin_tool\Extensions\RegistryKeys.vb 85 126



    Hier der vb code:
    Spoiler anzeigen

    Der error ist bei Function(k) Not String.IsNullOrEmpty(k)

    VB.NET-Quellcode

    1. <System.Runtime.CompilerServices.Extension> _
    2. Public Function GetFormattedKeyValues(key As RegistryKey) As IEnumerable(Of String)
    3. If key Is Nothing Then
    4. Exit Function
    5. End If
    6. For Each k As String In key.GetValueNames().Where(Function(keyVal) Not keyVal.IsNameOrValueNull(key)).Where(Function(k) Not String.IsNullOrEmpty(k))
    7. Return String.Format("{0}||{1}", k, key.GetValueSafe(k))
    8. Next
    9. End Function

    Und hier der c# ori-code:
    Spoiler anzeigen

    C#-Quellcode

    1. public static IEnumerable<string> GetFormattedKeyValues(this RegistryKey key)
    2. {
    3. if (key == null) yield break;
    4. foreach (var k in key.GetValueNames().Where(keyVal => !keyVal.IsNameOrValueNull(key)).Where(k => !string.IsNullOrEmpty(k)))
    5. {
    6. yield return string.Format("{0}||{1}", k, key.GetValueSafe(k));
    7. }
    8. }


    Wie gesagt, ich komm nicht weiter, da das der absolte brainfaq ist....
    Eine schnelle Hilfe währ sehr nett.
    Mfg
    Wer Rechtschreibfehler findet darf sie behalten :)
    @WeLoveBurgers Benenne die im Lambdablock einfach um.
    Edit: Da zweimal Where auf ein IEnumerable angewendet wird und das ja der selbe Typ bleibt, kann man das auch gleich logisch kombinieren:

    C#-Quellcode

    1. foreach (var k in key.GetValueNames().Where(keyVal => !keyVal.IsNameOrValueNull(key) && !string.IsNullOrEmpty(keyVal)))
    2. {
    3. yield return string.Format("{0}||{1}", k, key.GetValueSafe(k));
    4. }


    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Trade“ () aus folgendem Grund: Codeverbesserung