2010-03-23 6 views
2

J'ai une table de données contenant une colonne en tant que FilePath.
C#: Filtrage des données de la table de données à l'aide de la méthode select

CheminFichier
D: \ Nouveau dossier \ link.txt
D: \ New dossier \ SharepointMigration (travail annexe) .xls
D: \ New dossier \ my2 \ link.txt
D : \ New dossier \ my2 \ SharepointMigration (travail annexe) .xls
D: \ New dossier \ my2 \ my3 \ Nouveau texte Document.txt
D: \ Nouveau dossier \ Try.txt

Je suis filtrent ma table de données par

DataRow[] dtRow = dataTable_FilesWithMetaData.Select("FilePath Like '" + sourcePath + "%'"); 

Mais il me donne tous les fichiers et les fichiers de sous-dossier. Mais je ne veux que des fichiers et non des sous-dossiers. Comment écrire un tel type d'expression de filtre .. ??

EDIT: J'utilise le framework VS-2008 2.0. Les fichiers proviennent d'un serveur au format xml, puis je remplis mon gridview.

Répondre

2

Si LINQ est disponible:

DataTable dt = new DataTable(); 

dt.Columns.Add("FilePath", typeof(string)); 

dt.Rows.Add(@"D:\New folder\link.txt"); 
dt.Rows.Add(@"D:\New folder\my2\link.txt"); 

string target = Path.GetDirectoryName(@"D:\New folder\"); 

DataRow[] rows = dt.Rows.Cast<DataRow>().Where(dr => 
    Path.GetDirectoryName(((string)dr["FilePath"])).Equals(target)) 
    .ToArray(); 

Ceci ne retourne la ligne contenant ("D:\New folder\link.txt").

Dans .NET 2.0, vous pouvez créer une méthode d'aide, quelque chose comme ceci:

public static DataRow[] GetRowsForDir(DataTable table, string targetDir) 
{ 
    var result = new List<DataRow>(); 

    foreach (DataRow row in table.Rows) 
    { 
     if (Path.GetDirectoryName(((string)row["FilePath"])).Equals(targetDir)) 
     { 
      result.Add(row); 
     } 
    } 

    return result.ToArray(); 
} 
+0

Merci João Angelo, Ur la méthode helper fonctionne .. Bonne façon de faire une telle chose .. Merci encore 1s;) – Royson

0

Si les fichiers sont sur la machine exécutant l'application, pourquoi ne pas simplement faire un

Directory.GetFiles(sourcePath) 

pour le chemin que vous voulez?

+0

Les fichiers proviennent d'un serveur au format xml, puis je suis peuplant gridview. – Royson

Questions connexes