比较数据集列值和字符串数组值C#
我正在尝试创建一个程序来扫描我们的公司分发点,并将使用我从SCCM导出的包数据。比较数据集列值和字符串数组值C#,c#,dataset,C#,Dataset,我正在尝试创建一个程序来扫描我们的公司分发点,并将使用我从SCCM导出的包数据。 我目前有一个SQL数据集作为数据源连接到VisualStudio,还有一个字符串数组贯穿目录并填充列表视图 数据集包含3个表,我要使用的一个称为PackageDB_Query: 此表中的列为: 包装名称 制造商 描述 版本 语言 PackageID(这是服务器上文件夹的名称(例如FMC00015A) 我会将目录名与数据集中的PackageID进行比较,然后返回包名 下面是我用来用文件夹名称填充listview的
我目前有一个SQL数据集作为数据源连接到VisualStudio,还有一个字符串数组贯穿目录并填充列表视图 数据集包含3个表,我要使用的一个称为PackageDB_Query: 此表中的列为:
- 包装名称
- 制造商
- 描述
- 版本
- 语言
- PackageID(这是服务器上文件夹的名称(例如FMC00015A)
`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");
}
}'
'private void FolderScanTest()
{
尝试
{
var ds=新的PackageDBDataSet();
var dt=ds.Tables[“PackageDB_Query”];
字符串[]dirs=Directory.GetDirectories(@“\\PLYMMIMS001\SMSPKGD$”,“FMC*”;
folderCntBox.Text=dirs.Length.ToString(CultureInfo.InvariantCulture);
foreach(dirs中的字符串dir)
{
DataRow dr=dt.Rows.Cast().Single(row=>row[“PackageID”]==dir);
var packageName=dr[“packageName”]作为字符串;
列表框1.Items.Add(packageName);
}
}
捕获(例外情况除外)
{
Show(Resources.MainForm_FolderScan_进程_失败___0_+”:“+ex,”错误”);
}
}'
它说序列中没有匹配的元素!应该是这样的:
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"];
使用System.Linq;
...
数据集ds=GetDataSet();
DataTable dt=ds.Tables[“PackageDB_Query”];
DataRow dr=dt.Rows.Cast().Single(row=>row[“PackageID”]==dir);
字符串packageName=dr[“packageName”];
应该是这样的:
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"];
使用System.Linq;
...
数据集ds=GetDataSet();
DataTable dt=ds.Tables[“PackageDB_Query”];
DataRow dr=dt.Rows.Cast().Single(row=>row[“PackageID”]==dir);
字符串packageName=dr[“packageName”];
数据集是一个表容器;如果数据集中只有一个表,则Datatable dt=myDataSet.tables[0];
将返回您期望的表我不确定该表是否有效……数据集包含三个不同的表:DistributionPoints PackageDB PackageDB\u Query(这是我需要引用的表)感谢您的回复!您的SQL数据集是否返回具有表名的数据?如果是,则可以根据特定表中的PackageID轻松获取PackageName。如果不是,则意味着您不知道在哪个表中(显然是在数据集中的哪个索引上)包信息是。在这种情况下,您必须检查DataSet中的每个表并找出包名称。如果这有意义,请告诉我。我将提供代码。您得到的错误意味着DataTable中没有包含您要查找的包ID的行。您的代码以ds=new PackageDBDataSet()开头
生成空数据集。您认为您有代码从数据库加载填充的数据集?数据集是一个表容器;如果数据集中只有一个表,则Datatable dt=myDataSet.tables[0];
将返回您期望的表我不确定该表是否有效…数据集包含三个不同的表:DistributionPoints PackageDB PackageDB_Query(这是我需要引用的表)感谢您的回复!您的SQL数据集是否返回具有表名的数据?如果是,则可以根据特定表中的PackageID轻松获取PackageName。如果不是,则意味着您不知道在哪个表中(显然是在数据集中的哪个索引上)包信息是。在这种情况下,您必须检查DataSet中的每个表并找出包名称。如果这有意义,请告诉我。我将提供代码。您得到的错误意味着DataTable中没有包含您要查找的包ID的行。您的代码以ds=new PackageDBDataSet()开头
这会生成一个空数据集。你认为你有代码可以从数据库中加载填充的数据集吗?感谢所有的帮助…有时我会想得太多!我根据你的建议对代码进行了编辑,但仍然不起作用!这是我的函数:感谢所有的帮助…有时我会想得太多!哈哈我已经根据您的建议对代码进行了编辑,但仍然不起作用!以下是我的功能: