我的目标是使用 C# ASP.NET MVC 将 148 万个项目从 XML 文件加载到内存中的通用集合字典中,并能够将过滤器列表呈现到视图中。现在它可以在我的字典中以 VS 调试模式作为单个用户处理大约 1/2 百万个项目。再出现内存不足错误 - 现在我得到: myDictionary.Count 导致 System.TypeInitializationException - '函数评估因内存不足异常而被禁用。
过去,在从 XML 加载到 Dict 期间,mscorlib.dll 也会抱怨内存不足。
我有足够的系统内存,我怎样才能给这个 MVC Web 应用程序更多?顺便说一句,我尝试将 XML 转换为 Perl 字典,它适用于 150 万个对象 - 没问题。我不想用 Perl 编写我的应用程序。如果 Perl 能做到,C# 也必须能做到——我只是还没能找到搜索网络的解决方案。
示例代码:
Dictionary<string, msg> masterDictionary = new Dictionary<string, mgs>();
foreach (string file in filePath)
{
XDocument xdoc = XDocument.Load(file);
Dictionary<string, msg> fileDictionary = xdoc
.Descendants("msg")
.ToDictionary(m => m.Element("msgId").Value,
m => new msg
{
msgId = m.Element("msgId").Value,
msgType = m.Element("msgType").Value,
name = m.Element("name").Value
});
//now insert your new values into the master
foreach(var newValue in fileDictionary)
masterDictionary.Add(newValue.Key, newValue.Value);
}