1
votes

I need to read the values from a variable which is of type object for e..g.., i have a variable called result as:

object result= h[key];

h[key] is a hash table which returns 5 values to result variable. How do I read the 1st value to my local variable of type string in C# script in SSIS package?

I can see only GetType, Equals, ToString() options for result variable.

Any help please?

there is the sample:

there is a sample; 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;
    }


}

now

public void fun1() { var result = (object )h[subject]; ///read values from the hash table

}

3
Change (object) to (LocationInfo), then just make some properties to get the values. - cush
yeah i got it thanks very much - lch

3 Answers

1
votes

Update: Ok well you have the LocationInfo class so do something like this:

LocationInfo result = (LocationInfo)h[key]; 

Then just make some properties on the LocationInfo class to retrieve your strings.

Your probably need to cast the object that is in the hashtable. So something like:

result = (Type)h[key];

Here is an example of how it would work:

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);
}

So when you want to retrieve from the table you would do:

Person result = (Person)h[key];
1
votes

Supposing you know the type of the result you can cast the objectvar result = (MyType) h[key]

EDIT: use this inside your function to get first value var result = ((LocationInfo) h[key]).A

1
votes

You have to cast result to the class or interface you are expecting.

var result = (IExpectedObject)h[key];