Thursday 9 March 2017

switch case on data type in C#

private static bool IsValidForMerge(dynamic primaryValue, dynamic secondaryValue)

{
 if (secondaryValue == null) return false;
switch (secondaryValue.GetType().ToString() as string)
{
 case "Decimal":
decimal d1;
decimal.TryParse(secondaryValue, out d1);
decimal d2;
decimal.TryParse(secondaryValue, out d2);
return d1 == default(decimal) && d2 != default(decimal);
case "Int32":
int i1;
int.TryParse(secondaryValue, out i1);
int i2;
int.TryParse(secondaryValue, out i2);
return i1 == default(int) && i2 != default(int);
case "String":
return string.IsNullOrEmpty(primaryValue) && !string.IsNullOrEmpty(secondaryValue);
case "DateTime":
DateTime dt1;
DateTime.TryParse(secondaryValue, out dt1);
DateTime dt2;
DateTime.TryParse(secondaryValue, out dt2);
return dt1 == default(DateTime) && dt2 != default(DateTime);
case "Guid":
Guid g1;
Guid.TryParse(secondaryValue, out g1);
Guid g2;
Guid.TryParse(secondaryValue, out g2);
return g1 == default(Guid) && g2 != default(Guid);
}
 return false;

}