会社の配布ポイントをスキャンし、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");
}
}'
シーケンスに一致する要素が含まれていません!