我需要读取e..g ..类型为object
的变量的值,我有一个名为result的变量:
object result= h[key];
h[key]
是一个哈希表,它向结果变量返回5个值。如何在SSIS包中的C#脚本中读取第一个值为字符串类型的本地变量?
我只能看到结果变量的GetType
,Equals
,ToString()
选项。
请帮忙吗?
有样本:
有一个样本; public void SQLLoop() { string bp,ap,ep,s,vs; LocationInfo info = new LocationInfo(); string connection =“Server = Sname; Database = Dname; Integrated Security = SSPI”; SqlConnection conn = new SqlConnection(connection);
conn.Open();
SqlCommand sqlcmd = new SqlCommand("SELECT Bp,Ap,EP,SL,VSr from Table1", conn);
SqlDataReader rs=sqlcmd.ExecuteReader();
while (rs.Read())
{
bp = rs.GetValue(0).ToString();
ap = rs.GetValue(1).ToString();
ep = rs.GetValue(2).ToString();
s = rs.GetValue(3).ToString();
vs = rs.GetValue(4).ToString();
info.loadLocationInfo(ap, bp, ep, s, vs);
h.Add(s, info);
}
conn.Close();
}
public class LocationInfo
{
String A;
String B;
String E;
String S;
String V;
int id;
public LocationInfo()
{
}
public void loadLocationInfo(String a,String b,String e,String s,String v)
{
A =a ;
B =b ;
E=e ;
S =s;
V = v;
}
}
现在
public void fun1() { var result =(object)h [subject]; ///从哈希表中读取值
}
答案 0 :(得分:1)
您必须将结果转换为您期望的类或接口。
var result = (IExpectedObject)h[key];
答案 1 :(得分:1)
假设您知道可以投射对象var result = (MyType) h[key]
编辑:在你的函数中使用它来获得第一个值var result = ((LocationInfo) h[key]).A
答案 2 :(得分:1)
更新: 好的,你有LocationInfo类,所以做这样的事情:
LocationInfo result = (LocationInfo)h[key];
然后在LocationInfo类上创建一些属性来检索字符串。
您可能需要转换哈希表中的对象。如下所示:
result = (Type)h[key];
以下是一个如何运作的示例:
Person1 = new Person("David", "Burris");
Person2 = new Person("Johnny", "Carrol");
Person3 = new Person("Ji", "Jihuang");
//The Add method takes Key as the first parameter and Value as the second parameter.
try
{
MyTable.Add(Person1.Lname, Person1);
MyTable.Add(Person2.Lname, Person2);
MyTable.Add(Person3.Lname, Person3);
}
catch (ArgumentException ae)
{
MessageBox.Show("Duplicate Key");
MessageBox.Show(ae.Message);
}
因此,当你想要从表中检索时,你会这样做:
Person result = (Person)h[key];