1

会社の配布ポイントをスキャンし、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");
        }
    }'

シーケンスに一致する要素が含まれていません!

4

1 に答える 1

1

それらの線に沿ったものでなければなりません:

using System.Linq;
...

DataSet ds = GetDataSet();
DataTable dt = ds.Tables["PackageDB_Query"];
DataRow dr = dt.Rows.Cast<DataRow>().Single(row => row["PackageID"] == dir);

string packageName = dr["PackageName"];
于 2012-07-26T01:20:05.267 に答える