【发布时间】:2013-01-12 02:58:20
【问题描述】:
我想检查数据表中是否存在特定行。
例如,我想检查属性表是否存在于 msi 数据表中。如果它存在,那么我想检查“属性”列和“值”列是否存在。如果两者都存在,那么我想检查属性“ARPNOMODIFY”是否存在。
if (database.Tables.Contains("Property"))
{
if (database.Tables["Property"].Columns.Contains("Property"))
{
// here I want to checked if "ARPNOMODIFY" or any other property exists or not. If it exists then I want its value.
}
}
我有一个结构为(“TableName”,“ColumnNAme1”,“ColumnName2”,“ColumnName1 处的值”)的数据表。所以对于上面的记录,该行就像 ("Property","Property","Value","ARPNOMODIFY") 并且我想返回值 1,因为 ARPNOMODIFY 存在并且它的值为 1。
现在将另一行视为 ("Property","Propery","Value","ICFAGREE")。现在,如果属性表中不存在 ICFAGREE 属性,那么我想返回空字符串。 提前致谢。
还要考虑另一行(“AdminExecuteSequence”、“Action”、“Condition”、“SetSpecifiedDir”)。现在在此示例中,AdminExecuteSequence 表具有 Action 和 Condition 列。 Action 列下的值之一是“SetSpecifiedDir”,因此它在“Condition”列下的对应值是“ORCADIR”。所以我想返回“ORCADIR”这个字符串,如果 AdminExecuteSequence 表中存在“SetSpecifiedDir”值,否则我会返回 null .
【问题讨论】:
-
由于 MSI 中需要某些属性,因此您的数据库不应不包含
Property表。 -
是的。属性表只是一个例子。但有些属性表可能包含 ARPNOMODIFY 属性,有些可能不包含。还有一些 msis 包含 RemoveFile 表,而一些 msis 不包含。所以想检查相关表是否存在,如果存在则相关行是否存在。我从数据表中获取此特定信息(strusture is["TableName","ColumnName1","ColumnName2","Value in ColumnNAme1"] )并且我想在 columnName2 处返回值。简而言之,我想将 DataTable 与 msi Datatable 连接起来。
-
您在使用 DTF (Microsoft.Deployment.WindowsInstaller) 吗?你好像是。
标签: c# wix windows-installer