这是我第一次问这里,但是我遇到了一个问题,我确信我错过了一些简单的事情。
我写了一个C#类库,其函数返回List>。如果从我为测试DLL创建的控制台应用程序中使用,该函数本身可以正常工作。 该函数的结尾部分是:
/* Sorto i risultati in base al ranking */
List<KeyValuePair<string, double>> SortedList = new List<KeyValuePair<string, double>>(matchIndexList_rank);
SortedList.Sort(delegate(KeyValuePair<string, double> firstPair,
KeyValuePair<string, double> secondPair)
{
return (-1) * firstPair.Value.CompareTo(secondPair.Value);
}
);
stopWatch.Stop();
response.success = true;
response.executionTime = stopWatch.ElapsedMilliseconds;
response.resultListKVPStrDoub = SortedList;
return response;
这里例如列表中第一个值的双部分是15.5796761265999(抱歉还不能包含图片!)
如果我将DLL包含在使用该函数的ASP.NET MVC应用程序中,问题就会出现。在这种情况下,列表的双重部分&gt;返回没有小数部分。
上面显示的相应值将返回155796761265999.0
这里有一些代码,我得到了错误的返回值:
searchEngine.Core.search search = new searchEngine.Core.search(HttpContext.Current.Server.MapPath("~/index_" + oIdentity.comapanyId.ToString()));
searchEngine.Core.genericResponse response = search.doSearch(searchStr);
double maxScore = response.resultListKVPStrDoub.Count > 0 ? response.resultListKVPStrDoub[0].Value : 1;
例如,maxScore获取155796761265999.0值,但List中的每个其他值都会遇到同样的问题。
如果我从双方检查变量,Visual Studio 2013会声明该类型确实是双重的。
这两个项目都是在同一台机器上开发的,这也是我的测试环境。我在两个项目上使用.Net Framework 4.0,并且两个项目的所有构建参数似乎相同。
我确信我错过了一些简单的东西,但却无法得到。 我很感激任何帮助。
由于
洛伦佐
嗨,问题解决了!(很遗憾,但是在发布8小时之前我无法通过自己的问题回答)
感谢Radu Pascal让我走上了正确的道路:通常我总是在一个解决方案中添加一个类库来调试它,但在这种情况下,我为另一个项目开发了它并且工作正常,所以我忽略了obviuos
感谢Marc Gravell,他发现了这个问题:即使我在搜索引擎的基础上忘记了它,也有一个基于文件的索引。在那里我从文本中挖掘我的价值观,并且我在那里读错了。
真正的谜团是用于测试的控制台应用程序中使用的相同DLL,甚至在同一台机器上的另一个ASP.NET MVC上工作正常。我解决了使用double.parse而不是Convert.ToDouble并强加了一种不变的文化。
idfDict[idItem] = double.Parse(s.Split('|')[1], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
感谢大家! 洛伦佐
答案 0 :(得分:0)
嗨,问题解决了!
感谢Radu Pascal让我走上了正确的道路:通常我总是在一个解决方案中添加一个类库来调试它,但在这种情况下,我为另一个项目开发了它并且工作正常,所以我忽略了obviuos
感谢Marc Gravell,他发现了这个问题:即使我在搜索引擎的基础上忘记了它,也有一个基于文件的索引。在那里我从文本中挖掘我的价值观,并且我在那里读错了。
真正的谜团是用于测试的控制台应用程序中使用的相同DLL,甚至在同一台机器上的另一个ASP.NET MVC上工作正常。我解决了使用double.parse而不是Convert.ToDouble并强加了一种不变的文化。
idfDict[idItem] = double.Parse(s.Split('|')[1], System.Globalization.NumberStyles.AllowDecimalPoint, System.Globalization.NumberFormatInfo.InvariantInfo);
感谢大家! 洛伦佐