gpt4 book ai didi

c# - GetDirectories - 仅从目录中检索几个文件夹

转载 作者:行者123 更新时间:2023-11-30 21:43:54 26 4
gpt4 key购买 nike

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 个左右文件夹的目录。是否可以只返回 10,然后在另一个 div 中返回 5。

所以基本上我有 15 个文件夹被返回,但我需要将底部 5 个放在与其他文件夹不同的标题下。如果我不清楚,我深表歉意。初学者!

最佳答案

您可以控制输出,当您执行 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);

所以第一行会自动枚举提供的路径内的目录,你根据名称过滤,然后取前十个。

您可以通过多种不同的方式解决这个问题,这就是为什么缩小范围会更有帮助。

"Go not to the Elves for counsel, for they will say both no and yes."


更新:

一个完整的 Linq 示例将是这两种方法之一:

var directories = Directory.GetDirectories(path);
var filtered = directories.Skip(5);

或者您可以在一行中完成。

var filtered = Directory.EnumerateDirectories(path).Skip(5).Take(5);

关于c# - GetDirectories - 仅从目录中检索几个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41227544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com