To check if var is String type

67,647

Solution 1

if(conditions[name] is string)
{
}
else
{
}

Solution 2

Hmm, I'm not sure why you are calling IsValueType, but this should be sufficient:

if (conditions[name] is string) 
{
    ///  
}

Solution 3

Approach - 1

Int32 Val = 0;
if (Int32.TryParse("Your Value", out Val))
{
    //Your Logic for int
}
else
{
    //Your Logic for String
}

Approach - 2 (using Late Binding)

Int32 Val = 0;
dynamic conditions = new Hashtable();
conditions.Add("miap", ViewState["miap_txt"]);
conditions.Add("pocode", ViewState["po_txt "]);
foreach (string name in conditions.Keys)
{
    if (Int32.TryParse(conditions[name].ToString(), out Val))
    {
        //Your Logic for int
    }
    else
    {
        //Your Logic for String
    }
}
Share:
67,647
Bulat Makhmutov
Author by

Bulat Makhmutov

Updated on December 24, 2020

Comments

  • Bulat Makhmutov
    Bulat Makhmutov over 3 years

    I have a problem in code in C#:

    I don't know how to implement logic - iterating through Hashtable having values of different data types, the schema I want is below:

    if the value in variable is String type
    {
     do action1;
    }
    else 
    {
      do action2;
    }
    

    There is a hashtable containing data of Types - String and Int (combined):

    public string SQLCondGenerator {
    
            get
            {
    
                Hashtable conditions = new Hashtable();
    
                //data having String data type
                conditions.Add("miap", ViewState["miap_txt"]);
                conditions.Add("pocode", ViewState["po_txt "]);
                conditions.Add("materialdescription", ViewState["mat_desc_txt"]);
                conditions.Add("suppliername", ViewState["supplier_txt"]);
                conditions.Add("manufacturername", ViewState["manufacturer_txt"]);
    
                //data having Int32 data type
                conditions.Add("spareparts", ViewState["sp_id"]); 
                conditions.Add("firstfills", ViewState["ff_id"]);
                conditions.Add("specialtools", ViewState["st_id"]);
                conditions.Add("ps_deleted", ViewState["ps_del_id"]);
                conditions.Add("po_manuallyinserted", ViewState["man_ins_id"]);
    
                String SQLCondString = "";
                String SQLCondStringConverted = "";
    
    
                string s = string.Empty;
                foreach (string name in conditions.Keys) 
                {
                    if (conditions[name] != null)
                    {
                        SQLCondString += name+ "=" +conditions[name]+ " and ";
                        Response.Write(conditions[name].GetType());
    
                        bool valtype = conditions[name].GetType().IsValueType;
                        if (valtype == string)
                        {
                          SQLCondString.Substring(0, SQLCondString.Length - 4);
                          SQLCondString += name + " and like '%" + conditions[name] + "%' and ";
                        }
                    }
                }
    
            //Response.Write("********************");
             SQLCondStringConverted = SQLCondString.Substring(0, SQLCondString.Length - 4);
             return SQLCondStringConverted;
            }   
        }
    

    May be I am wrong in coding, please advise!

    Thanks!