none
Abfrage mit LINQ RRS feed

  • Frage

  • Hallo,

    kurze Frage (hoffe ich doch) :-)

    Mit Linq frage ich Daten ab und möchte aber in der Where-Formel testen ob ein Wert aus einer Aufzählung vorkommt. Ich komme da aber leider nicht auf die Lösung.

    Ich möchte möchte es mir etwas einfacher machen und bereits im Select nur die Einträge selektieren bei denen ein Textteil aus einer Aufzählung vorkommt.

    From

    DirectoryEntry As Ionic.Zip.ZipEntry In _zipFile.Entries
    Where System.IO.Path.GetDirectoryName(DirectoryEntry.FileName).StartsWith(strGuidFolder) And
    DirectoryEntry.IsDirectory() And
    .....

    Order By System.IO.Path.GetDirectoryName(DirectoryEntry.FileName)

    Die Aufzählung wäre dann
    Dim arrText = {"Text1","Text2","Text3"}

    An der Stelle ... möchte ich nun sowas wie "if DirectoryEntry.Filename in (select * from arrText)

    Da ich zum teil auf verschiedene Einträge prüfen muss, wäre mir eine solche Lösung lieber, falls es geht...

    Viele Grüsse,
    Maximilian


    Sonntag, 31. Juli 2011 17:33

Antworten

  • Hallo Maximilian,

    dafür braucht es noch keine aufwändige Abfrage, hier kannst Du mit Contains arbeiten:

    Dim result As Boolean = arrText.Contains(DirectoryEntry.FileName)


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert MaxiTesch Sonntag, 31. Juli 2011 19:06
    Sonntag, 31. Juli 2011 17:52

Alle Antworten

  • Hallo Maximilian,

    dafür braucht es noch keine aufwändige Abfrage, hier kannst Du mit Contains arbeiten:

    Dim result As Boolean = arrText.Contains(DirectoryEntry.FileName)


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    • Als Antwort markiert MaxiTesch Sonntag, 31. Juli 2011 19:06
    Sonntag, 31. Juli 2011 17:52
  • Hallo Thorsten,

    vielen Dank für die Info, ich habe das verzweifelt anderst herum versucht, habe also den Contains nicht auf arrText sondern auf DirectoryEntry... versucht.

    Peinlich...

    Nochmal besten Dank.

    Gruss,
    Maximilian

    Sonntag, 31. Juli 2011 19:06
  • Hallo Maximilian,

    es ist ja nicht so dass es mit LINQ aufwändiger würde.

    Luftcode - sollte für DotNetZipLib ansatzweise passen:

    Using zip As New ZipFile(ZipFileName)
    	Dim patterns As String() = {"Part", "Sample"}
    
    	Dim directoryEntries = From entry In zip.Entries
            From pattern In patterns 
            Where entry.IsDirectory AndAlso entry.FileName.Contains(pattern)
            Order By entry.FileName
            Select entry
    
    	For Each entry In directoryEntries
    		Console.WriteLine(entry.FileName)
    	Next
    End Using
    
    Gruß Elmar

    Sonntag, 31. Juli 2011 19:24