在.NET C#中设置操作
我正在研究与粗糙相关的东西。该项目使用大量的集合操作和操纵。我一直在使用字符串操作作为set操作的停止间隙度量。它一直运行良好,直到我们需要通过该算法处理大量数据(500,000条记录,每个记录约40列以上)。
我知道.net 2.0中没有设置数据结构(2.0是我启动项目时的最新版本)我想知道是否有任何库在3.5添加了本机设置数据结构的情况下在.net cor中提供快速设置操作。
谢谢 。
解决方案
我们可以在C3.0中使用Linq to Objects。
LINQ支持某些设置操作。有关示例,请参见LINQ 101页面。
还有一个类HashSet(.NET 3.5)
这是Microsoft .NET中设置操作的准则:
HashSet和LINQ Set操作
HasSet类支持的设置操作列表:
HashSet集合类型
我们是否想过唱歌F#?这似乎是功能编程语言的工作。
更新:这适用于.Net 2.0。对于.Net 3.5,请参阅Jon.aku的文章。
对于有效地表示.Net中的集合,这是一个很好的参考。
尝试在.NET 3.5中使用HashSet。
.NET BCL团队成员的本页上有一些有关HashSet意图的很好的信息
.NET 3.5已经具有本机设置数据类型:HashSet。我们可能还需要查看HashSet和LINQ set运算符的操作。
在.NET 1.0中,有一个第三方Set数据类型:Iesi.Collections,它通过具有Iesi.Collections.Generic的.NET 2.0泛型进行了扩展。
我们可能想尝试一下所有这些,看看哪一个对我们最有利。 :)
也许值得一看C5,它是.NET的通用集合库,其中包括集合。
请注意,我并未对其进行过多研究,但它似乎是一个非常棒的收藏库。
我们应该看一下C5通用收藏库。该库是一种系统方法,可通过提供缺少的结构来修复.NET类库中的漏洞,并用一组设计良好的接口和通用类替换现有的结构。
除其他外,还有基于线性哈希的HashSet <T>
通用Set类。
我一直在滥用.NET 2.0中的Dictionary类:
private object dummy = "ok"; public void Add(object el) { dict[el] = dummy; } public bool Contains(object el) { return dict.ContainsKey(el); }