问题描述
else{
if(a.Item2 == ">"){
result = dict.Where(x => x.Value.Any(y => y.Key == a.Item1 && double.TryParse(y.Value,out double res) == double.TryParse(a.Item3,out double res1)));
//result = dict.Where(x => x.Value.Any(y => y.Key == a.Item1 && Convert.Todouble(y.Value) > Convert.Todouble(a.Item3)));
}
else if(a.Item2 == "<")
result = dict.Where(x => x.Value.Any(y => y.Key == a.Item1 && Convert.Todouble(y.Value) < Convert.Todouble(a.Item3)));
else if(a.Item2 == "<=")
result = dict.Where(x => x.Value.Any(y => y.Key == a.Item1 && Convert.Todouble(y.Value) <= Convert.Todouble(a.Item3)));
else if(a.Item2 == ">=")
result = dict.Where(x => x.Value.Any(y => y.Key == a.Item1 && Convert.Todouble(y.Value) >= Convert.Todouble(a.Item3)));
else if(a.Item2 == "==")
result = dict.Where(x => x.Value.Any(y => y.Key == a.Item1 && Convert.Todouble(y.Value) == Convert.Todouble(a.Item3)));
else if(a.Item2 == "!=")
result = dict.Where(x => x.Value.Any(y => y.Key == a.Item1 && Convert.Todouble(y.Value) != Convert.Todouble(a.Item3)));
else
throw new Exception("Comparison operator not found");
}
在上述代码情况下如何使用double.TryParse
代替Convert.Todouble
,因为我不知道如何使用out值进行比较。我要使用TryParse
,因为出现以下错误消息:
输入字符串的格式不正确
如何在当前的Senario中实现这一目标?
解决方法
这有点冗长,但是假设您只想返回可以将值解析为double的行:
result = dict.Where(x => x.Value.Any(y => y.Key == a.Item1
&& double.TryParse(y.Value,out double res) // Value can be parsed
&& double.TryParse(a.Item3,out double res1) // Item3 can be parsed
&& res == res1)); // the 2 parsed results match