所以我有一个时间有限的问题(子程序应该尽可能快)这样做。在文件的任何一点,我都有2个网络文件,如下所示:
Time: 23.369
1464953512
Bytes: 4193304
Time: 24.369
1464953502
Bytes: 4194304
Time: 24.369
1464953502
Bytes: 4194304
Time: 25.404
1464953527
Bytes: 4194304
请注意,2个文件不同,每个文件都包含一部分信息,我需要合并这两个文件以创建累积信息(删除重复项),如下所示:
Time: 23.369
1464953512
Bytes: 4193304
Time: 24.369
1464953502
Bytes: 4194304
Time: 25.404
1464953527
Bytes: 4194304
最快的方法是什么? (如果可能,请提供一些代码)。
感谢。
P.S。我正在看一些diff/merge libraries,但我认为这样做会有些过分。任何简单的.net / LINQ魔法都可以实现吗?此外,重复项是序列,如图所示,并没有散布。
编辑: -ve选民请发表评论,以便我可以改进或以其他方式更改问题更合适。
答案 0 :(得分:0)
如果这有助于任何人,我用它来找到2个文本文件的并集,在将它们转换为字符串枚举之前:
var dinfo = new DirectoryInfo(@"C:\http");
var files = dinfo.GetFiles("*.txt");
IEnumerable<string> _eValA = null;
IEnumerable<string> _eValB = null;
_eValA = File.ReadLines(@"C:\http\http1.txt");
_eValB = File.ReadLines(@"C:\http2.txt");
IEnumerable<String> union = _eValA.Union(_eValB);
//TODO: create file if does not exist
File.WriteAllLines(@"C:\http\union.txt", union.Cast<String>());
答案 1 :(得分:0)
您希望读取文件,在创建自定义类的实例时使用两个属性:Time和Bytes。在您的自定义类中,重写Equals和GetHashCode方法并让它们使用Time属性。例如:
public override int GetHashCode() {
return Time.GetHashCode();
}
public override bool Equals(obj other) {
//skipping type check and null check for brevity
return Time.Equals(other.Time);
}
然后只需将您的商品添加到HashSet<YourCustomClass>
即可。 HashSet
不允许重复,因此您可以顺利进行。