1

次のコードを使用してpdfのリストを取得し、それらを配列に配置しています。次に、オートコンプリートエクステンダーを使用してそれらを検索しています。すべて正常に動作しますが、 System.IO.directory.getfiles は常に必要のないファイルのパスを返します。

何か案は。

    Public Shared Function GetCompletionList(ByVal prefixText As String, ByVal count As Integer, ByVal contextKey As String) As String()
    'Create array of movies   
    Dim files() As String = System.IO.Directory.GetFiles("c:\pdfs")

    ' Return matching movies   
    Return (
         From m In files
         Where m.Contains(prefixText)
         Select m).Take(count).ToArray()
End Function
4

2 に答える 2

2

このLINQを試して、返されたフルファイル名リストからパスを削除してください

Dim files = Directory.GetFiles("c:\pdfs", "*.pdf").Select(Function(s) Path.GetFileName(s))

また、適切なオーバーロードを使用すると、Directory.GetFiles が PDF のみを取得できることにも注意してください。

于 2013-03-15T13:24:50.107 に答える
0

フルパスではなくファイル名が必要ですか?! Pathクラスを使用します:

Dim files() As String = System.IO.Directory.GetFiles("c:\pdfs")
Dim names = From path in files
            Let fileName = IO.Path.GetFileName(path)
            Where fileName.StartsWith(prefixText)
            Select fileName  Take count

変数名がこれがより適切であることを示唆しているため、StartsWith代わりに使用したことに注意してください。ContainsprefixText

于 2013-03-15T13:25:21.420 に答える