Maybe you are looking for this -
var result = Options[Name].ToString()
.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.StartsWith("\"") ? x.Trim('\"') : (int.TryParse(x, out temp) ? (object)temp : (object)bool.Parse(x)))
.ToArray();
Update
For a generic way to accomplish what you want is to write logicto identify type of data in a separate function GetData
-
var result = Options[Name].ToString()
.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => GetData(x))
.ToArray();
GetData(input)
function -
private object GetData(string input)
{
object data;
if (input.StartsWith("\""))
data = input.Trim('\"');
else if (bool.TryParse(input, out bool bTemp))
data = bTemp;
else if (int.TryParse(input, out int iTemp))
data = iTemp;
else if (double.TryParse(input, out double dTemp))
data = dTemp;
else
data = input;
return data;
}
You can extend this method to parse input string to any possible datatype.
Hope this answers your question.