我的数据表包含一列作为FilePath。
FilePath
D:\ New folder \ link.txt
D:\ New 文件夹\ SharepointMigration(工作 附表).xls
D:\新 folder \ my2 \ link.txt
D:\ New 文件夹\ MY2 \ SharepointMigration(工作 附表).xls
D:\新 folder \ my2 \ my3 \ New Text Document.txt
D:\ New folder \ Try.txt
我按
过滤我的数据表DataRow[] dtRow = dataTable_FilesWithMetaData.Select("FilePath Like '" + sourcePath + "%'");
但它给了我所有文件和子文件夹文件。但我只希望文件不是子文件夹。如何编写这种类型的过滤表达式。??
编辑:我正在使用VS-2008 2.0框架。 文件来自某个服务器的xml格式,然后我填充了我的gridview。答案 0 :(得分:2)
如果LINQ可用:
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();
这只会返回包含("D:\New folder\link.txt"
)的行。
在.NET 2.0中,您可以创建一个辅助方法,如下所示:
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();
}
答案 1 :(得分:0)
如果文件在运行应用程序的计算机上,为什么不执行
Directory.GetFiles(sourcePath)
您想要的路径?