首先,我想提一下,我几天前才开始学习C#,所以我对它的了解有限.
我正在将具有相同类型键值对的多个词典合并为一个词典.
以下是我的方法,它可以工作,也可以处理重复
var result = dict1.Concat(dict2).GroupBy(d => d.Key)
.ToDictionary(d => d.Key, d => d.First().Value);
result = result.Concat(dict3).GroupBy(d => d.Key)
.ToDictionary(d => d.Key, d => d.First().Value);
result = result.Concat(dict4).GroupBy(d => d.Key)
.ToDictionary(d => d.Key, d => d.First().Value);
result = result.Concat(dict5).GroupBy(d => d.Key)
.ToDictionary(d => d.Key, d => d.First().Value);
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种有效的方法来合并具有相同数据类型的键值对的多个字典.
我是C#和面向对象编程的新手.我有一个解析文本文件的应用程序.
该应用程序的目标是读取提供的文本文件的内容并替换匹配的值.
当提供大约800 MB到1.2 GB的文件作为输入时,应用程序崩溃并出现错误System.OutofMemoryException.
在研究方面,我遇到了几个建议改变目标平台的答案:x64.
更改目标平台后存在同样的问题.
以下是代码:
// Reading the text file
var _data = string.Empty;
using (StreamReader sr = new StreamReader(logF))
{
_data = sr.ReadToEnd();
sr.Dispose();
sr.Close();
}
foreach (var replacement in replacements)
{
_data = _data.Replace(replacement.Key, replacement.Value);
}
//Writing The text File
using (StreamWriter sw = new StreamWriter(logF))
{
sw.WriteLine(_data);
sw.Dispose();
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
错误指向
_data = sr.ReadToEnd();
替换是一本字典.Key包含原始单词,Value包含要替换的单词.
Key元素将替换为KeyValuePair的Value元素.
接下来的是阅读文件,替换和写作.
我尝试使用StringBuilder而不是字符串,但应用程序崩溃了.
这可以通过一次读取一行文件,替换和写入来克服吗?做同样的事情的有效和快捷方式是什么.
更新:系统内存为8 GB,在监控性能时,内存占用率达到100%.
@Tim Schmelter的答案很有效.
但是,内存利用率飙升超过90%.这可能是由于以下代码:
String[] arrayofLine = File.ReadAllLines(logF);
// Generating …Run Code Online (Sandbox Code Playgroud)