我正在尝试创建一个程序来扫描我们的公司分发点,并将使用我从 SCCM 导出的包数据。
我目前有一个作为数据源连接到 Visual Studio 的 SQL 数据集,还有一个通过目录运行并填充列表视图的字符串数组。
数据集包含 3 个表,我要使用的表称为 PackageDB_Query:
此表中的列是:
- 包裹名字
- 制造商
- 描述
- 版本
- 语
- PackageID(这是服务器上文件夹的名称(例如 FMC00015A)
我会将目录名称与数据集中的 PackageID 进行比较并返回包名称。
这是我用来用文件夹名称填充列表视图的函数:
`public void FolderScan()
{
try
{
string[] dirs = Directory.GetDirectories("\\" + _serverName + "\\" + _commonShareName, "FMC*");
folderCntBox.Text = dirs.Length.ToString();
foreach (string dir in dirs)
{
listBox1.Items.Add(dir);
}
}
catch (Exception ex)
{
Console.WriteLine(Resources.MainForm_FolderScan_The_process_failed___0_, ex);
}
}`
我已根据以下建议对代码进行了编辑,但仍然无法正常工作!这是我的功能:
'private void FolderScanTest()
{
try
{
var ds = new PackageDBDataSet();
var dt = ds.Tables["PackageDB_Query"];
string[] dirs = Directory.GetDirectories(@"\\PLYMMIMS001\SMSPKGD$", "FMC*");
folderCntBox.Text = dirs.Length.ToString(CultureInfo.InvariantCulture);
foreach (string dir in dirs)
{
DataRow dr = dt.Rows.Cast<DataRow>().Single(row => row["PackageID"] == dir);
var packageName = dr["PackageName"] as string;
listBox1.Items.Add(packageName);
}
}
catch (Exception ex)
{
MessageBox.Show(Resources.MainForm_FolderScan_The_process_failed___0_ + ":" + ex, "Error");
}
}'
它说序列不包含匹配元素!