在.NET C#中设置操作

时间:2020-03-06 14:31:26  来源:igfitidea点击:

我正在研究与粗糙相关的东西。该项目使用大量的集合操作和操纵。我一直在使用字符串操作作为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);
}