2017-05-12 12 views
0

pathからファイルのリストを取得するためのコードがあります。FileNamepathという名前のファイルからItemsという名前のファイルのリストを取得しようとしています。個々のファイルを取得する必要があります。これらの個々のファイルをすべて組み合わせ、文字列[FileNames(ファイルはリストに入れる必要があります)に入れてください。パスからファイルのリストを取得する方法

おかげ

if (Directory.Exists(FileNamePath)) 
{ 
    //con.Open(); 
    List<string> items = new List<string>(); 
    string qry="select FileName from MembersFiles where fk_MemberId='" + GlobalValues.Member_PkId + "' and Document_Type='" + doc + "'"; 
    using (SqlCommand cmd = new SqlCommand(qry, con)) 
    { 
     cmd.CommandType = CommandType.Text; 
     // con.Open(); 
     using (SqlDataReader objReader = cmd.ExecuteReader()) 
     { 
      if (objReader.HasRows) 
      { 
       while (objReader.Read()) 
       {      
        string item = objReader.GetString(objReader.GetOrdinal("FileName")); 
        items.Add(item); // List Of Files      
       } 
      } 
     } 
    } 
    con.Close(); 

    string[] fileNames1; 
    for (int i = 0; i < items.Count; i++) 
    { 
     fileNames1 = Directory.GetFiles(FileNamePath, items[i]); // Fetching individual files 
    } 
    // String[] fileNames= // here i need to put all files(list of files) 

答えて

2

は、LINQのリファクタリングです:私の要件をcommenting.butため

 if (Directory.Exists(FileNamePath)) 
     { 
      List<string> dbFileNames = null; 
      string qry = "select FileName from MembersFiles where fk_MemberId='" + GlobalValues.Member_PkId + "' and Document_Type='" + doc + "'"; 
      using (SqlDataAdapter da = new SqlDataAdapter(qry, con)) 
      { 
       con.Open(); 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 
       dbFileName = dt.Rows.OfType<DataRow>() 
        .Select(r => r[0].ToString()).ToList(); 
       con.Close(); 
      } 
      string[] fileNames1 = dbFileNames.Select(f => 
      Path.Combine(FileNamePath, f)).ToArray(); 
     } 
+0

お返事ありがとうございますreply.butファイルを取得していないので、カウント= 0 – Ren

+0

**サンプルデータ**を 'FileName'列に表示できますか?私はあなたのロジックに従っており、理論的にはあなたのコードはファイルを取得できませんでした。 –

+0

FileNameは、LoanForm_Penguins.jpg – Ren

0

Directory.GetFiles()方法は、あなたのFILE_PATHのリストが表示されます、そしてあなただけのあなたがしなければならないので、ファイル名を取得したいです次のようなもの:

var fileEntries = Directory.GetFiles(path) 
           .Select(x=>Path.GetFileName(x)); 

拡張子なしでファイル名を取得する必要がある場合は、Path.GetFileNameWithoutExtension()を試すこともできます。ここで

+0

おかげfilenamepathから「アイテム」という名前のリストに存在しているファイルのみを取得することです。 – Ren

関連する問題