我試圖創建一個程序來掃描我們的公司分發點,並使用我從SCCM導出的數據包數據。
我目前有一個SQL數據集連接到Visual Studio作爲數據源,也是一個字符串數組,通過目錄運行並填充列表視圖。將數據集列值與字符串數組值進行比較C#
數據集包含3個表和一個我想用被稱爲PackageDB_Query:
在這個表中的列有:
- PACKAGENAME
- 廠商
- 說明
- 版本
- 語言
- PackageID(這是服務器上文件夾的名稱(例如, FMC00015A)
我會將目錄名稱與數據集中的PackageID進行比較並返回Package名稱。
下面是我用的文件夾名稱來填充列表視圖功能:
`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");
}
}'
它說該序列不包含匹配元素!
數據集是一個表容器;如果數據集中只有一個表,那麼'Datatable dt = myDataSet.tables [0];'將返回您期望的表 – Boomer 2012-07-25 23:56:52
我不確定這將工作...該數據集包含三個不同的表: DistributionPoints PackageDB PackageDB_Query(這是我需要參考的表格) 謝謝你的回覆! – Tonesto7 2012-07-26 00:50:13
你的SQL數據集是否返回帶有表名的數據?如果是,則可以很容易地根據該特定表中的PackageID獲取PackageName。如果沒有,意味着你不知道Package信息在哪個表(顯然是DataSet中的Index)。在這種情況下,您必須檢查DataSet中的每個表並找出包名。讓我知道這是否合理。然後我會提供代碼。 – Umesh 2012-07-26 03:19:02