Если 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();
}