c# - 从包含 100 个文件的文件夹中随机选择 40 个文件
问题描述
我正在尝试从文件夹中随机选择一定数量的文件。例如,如果一个文件夹有 100 个文件,我想随机选择 40 个文件而不是前 40 个。
string sourceFolder = //unc path;
var dir = new DirectoryInfo(sourceFolder );
var allFiles = dir.GetFiles("*.pdf");
int fileCount = allFiles.Length; // 100 files
int folderOne = 60;
int folderTwo = 40;
if (fileCount > 0)
{
// select 60 files randomly and move them to folderOne
}
我尝试在 C# 中使用 Random 函数,但我无法理解它。
var random = new Random();
int index = random.Next(0, fileCount - 1);
var file = allFiles[index].FullName;
任何帮助将不胜感激。谢谢
解决方案
随机化文件的顺序,然后您可以简单地将前 60 个复制到一个位置,将后 40 个复制到其他位置。
例如
var rnd = new Random();
var shuffled = allFiles.OrderBy(f => rnd.Next()).ToList();
推荐阅读
- express - 护照不发送范围
- osgi - 如何设置从 enRoute 开始的 BND 项目以在 ApacheFelix 和 OSGI 6 上运行?
- ionic3 - 添加firebase插件( ionic cordova plugin add cordova-plugin-firebase )后如何解决问题,google plus在ionic 3中不起作用?
- php - Nginx 选择错误的 $document_root
- slurm - 为每个子作业分配来自不同分区的节点
- django - 通过发送到用户电子邮件的 OTP 进行身份验证
- mysql - 如何将 Github 存储库(作为命令源)连接到 mysql-server?
- angular - 在 Nativescript 中解析守卫
- jquery - 如何根据单选按钮上选择的输入值传递值?
- image-processing - 什么是新颖的对象字幕?为什么 MS-COCO 中的 8 个类被排除在此任务中?