c#和ASP.net的新手,我正在检索目录并且已经这样做了。
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ListItem item;
ListItem item
string folderLocation = @"\\serv5007i\TeamCityDeploy\Trunk Production Build\Current\bin\Runtime";
int startSize = folderLocation.Length+1;
string[] fileNames = Directory.GetDirectories(folderLocation);
foreach (string fileName in fileNames)
{
item = new ListItem();
item.Value = item.Text = "Add " + fileName.Substring(startSize);
CheckBoxList1.Items.Add(item);
CheckBoxList2.Items.Add(item);
CheckBoxList3.Items.Add(item);
}
}
}
}
所以我将输出作为15个左右文件夹的目录。是否可以在另一个div中返回10而后5。
所以基本上我有15个文件夹被返回,但我需要将底部5放在与其他文件不同的标题下。如果我不清楚,我道歉。初学者!
答案 0 :(得分:3)
您可以控制输出,当您执行Directory.GetDirectories
时,您将收到一个集合。我相信在这个例子中,你会收到一个字符串数组。这可以根据需要进行操作:
循环示例:
foreach(string directory in directories)
{
// Enumerate over all items within the collection.
}
for(int index = 0; index < directories.Length; index++)
{
// Will enumerate until index == directories
// If you make index five, it would start at position six of the array.
// since they're zero based. But you can manipulate how you want.
}
do
{
index++
// Perform an action. Based on the while.
}
while(index != directories.Length);
while(index != directories)
{
index++;
// Perform action until equal.
}
这些方法的缺点是,你是在操纵起始位置或结束位置的整数。这可能会在代码中造成混淆。另一种方法是Linq,类似于上面的迭代,但会使代码更具表现力。
Linq示例:
var filtered = directories.Take(10); // Take the first ten.
var filtered = directories.Skip(5); // Skip the first five.
var filtered = directories.Where(path => new DirectoryInfo(path).Name.Contains("Name")); // If directory names contain, return on that.
你也可以这样做:
var filter = Directory.EnumerateDirectories(path)
.Where(directory => directory.Name.Contains("Sample"))
.Take(10);
因此,初始行将自动枚举提供的路径中的目录,您根据名称进行过滤,然后取前十。
你可以通过很多不同的方式解决这个问题,这就是为什么缩小它会更有帮助。
“不要向精灵求助,因为他们会说不,是的。”
<强>更新强>
完整的Linq示例将是以下两种方法之一:
var directories = Directory.GetDirectories(path);
var filtered = directories.Skip(5);
或者你可以在一行中完成。
var filtered = Directory.EnumerateDirectories(path).Skip(5).Take(5);