草庐IT

Set集合

全部标签

c# - 用于快速插入/删除的 .net 集合

我需要维护一个连接客户名册,这些客户的生命周期很短,而且经常上下波动。由于潜在的客户端数量,我需要一个支持快速插入/删除的集合。建议? 最佳答案 C5通用集合库我在C#和C++中找到的最好的实现是这些——对于C#/CLI:http://www.itu.dk/research/c5/Release1.1/ITU-TR-2006-76.pdfhttp://www.itu.dk/research/c5/它经过充分研究,具有可扩展的单元测试,并且自2月以来,他们还在.Net中实现了通用接口(interface),这使得使用集合变得更加容易。

c# - 无法添加类型为 'filter' 且唯一键属性 'name' 设置为 'ASP.Net_4.0_64bit' 的重复集合条目

我遇到这个问题已经有一段时间了。当我打开一个指向我的本地主机的asp.net页面时,就会发生这种情况。我正在运行带有visualstudio2012和iis7.5的Windows2008r2。它显示的配置源是这样的。:1451:1452:1453:它表明它在第1452行出错。最初,这是inetsrv32位和64位位置的applicationHost.config文件中的一个问题。我进去并删除了重复的4.0条目,它工作了好几个月。然后它又开始抛出这个错误。那时我刚刚完全重新安装了IIS,我的应用程序又开始工作了。此错误再次开始出现,我再次执行了IIS的完全重新安装,但这次没有帮助,我的应

c# - 隐式类型数组 : why we can't set array size explicitly?

C#语言规范(7.6.10.4)说,数组创建表达式有树种:newnon-array-type[expression-list]rank-specifiersoptarray-initializeroptnewarray-typearray-initializernewrank-specifierarray-initializer第三个用于隐式类型数组:varfoo=new[]{1,2,3};问题:在隐式类型数组的情况下,是否有任何重要的理由禁止显式设置数组大小?与这种语法相比,它看起来像是不对称行为:varfoo=newint[3]{1,2,3};更新。稍微澄清一下。我可以看到,显式设

C# - 大型集合存储

我目前正面临一个令人头疼的问题,我正在处理一个大型数据集(当我说大型时,我指的是数十亿行数据)并且我在速度和可扩展性之间陷入困境。我可以在数据库中存储数十亿行数据,但我的应用程序需要不断检查数据集中是否存在新的一行数据,如果不存在,则插入它,否则,检索它。如果我要使用数据库解决方案,我估计每次调用数据库以检索一行数据需要10毫秒(乐观估计),我需要为我在应用程序中处理的每个文件检索大约80万条记录,这意味着要处理每个文件(10msx800k=2.22hours)。该时间跨度对于分析和处理1个文件来说太长了,考虑到当数据库增长到数十亿行时,从数据库中检索一行数据所需的时间将会增加。我也想

c# - 我可以从 Dapper 查询返回多个派生类型的集合吗

我有一个类似这样的类结构:publicabstractclassDevice{publicintDeviceId{get;set;}//AdditionalProperties}publicclassDeviceA:Device{//SpecificBehaviour}publicclassDeviceB:Device{//SpecificBehaviour}我需要检索设备列表,或实例化为适当派生类型的单个设备(基于数据库中设备记录中的类型值)。也就是说,Device对象的集合应该包含许多具有不同类型的对象,所有这些对象都派生自Device。我已经通过以下方式实现了这一点,但总觉得有些

c# - 使用 NHibernate 对延迟加载的集合进行分页

我读了thisarticle其中Ayende指出NHibernate可以(与EF4相比):Collectionwithlazy=”extra”–LazyextrameansthatNHibernateadaptstotheoperationsthatyoumightrunontopofyourcollections.Thatmeansthatblog.Posts.Countwillnotforcealoadoftheentirecollection,butratherwouldcreatea“selectcount(*)fromPostswhereBlogId=1”statement,

c# - ManualResetEventSlim : Calling . Set() 后跟 .Reset() 不会释放 *任何* 等待线程

ManualResetEventSlim:调用.Set()后立即调用.Reset()不会释放任何等待线程(注意:ManualResetEvent也会发生这种情况,而不仅仅是ManualResetEventSlim。)我在发布和Debug模式下都尝试了下面的代码。我在四核处理器上运行的Windows764位上使用.Net4作为32位版本运行它。我从VisualStudio2012编译它(因此安装了.Net4.5)。在我的系统上运行它时的输出是:Waitingfor20threadstostartThread1started.Thread2started.Thread3started.Th

c# - 最轻量级的 .NET 集合

我想知道,.NET中的集合实现有何不同。例如,我经常使用List等来存储项目列表。但是我只需要一个容器来装元素,我想我不需要List的所有功能有。我只需要一个具有put方法的容器,并将允许客户端代码迭代容器。是否有更快、更轻量级的集合实现来实现IEnumerable在.NET中? 最佳答案 实现IEnumerable的最轻量级容器是类型化数组。它没有Add方法(因此不会像列表那样动态调整大小),但如果您预先知道需要多少元素,则可以定义数组并在给定位置插入元素。varmyArray=newint[10];myArray[0]=123;

c# - 如果列表/集合为空或 null 且无法迭代(不是参数),抛出什么异常类型?

假设一个简单的例子,其中一个方法检索一个集合(例如包含一些配置字符串的列表)并尝试以某种方式检查它:voidInit(){XmlDocumentconfig=newXmlDocument();config.Load(someXml);varlist=config.SelectNodes("/root/strings/key");//Normally,listshouldnotbenulloremptyif(list==null||list.Count==0)thrownewSomeExceptionType(message);//Whatkindofexceptiontothrow?/

c# - MSBuild 未处理的异常 : The FileName property should not be a directory unless UseShellExecute is set

版本dotnet核心SDK:2.1.403docker:18.09.7Linux内核:5.0.0-27Ubuntu:18.04.3问题我正在docker中运行一个ASP.NETCore项目。当我docker-composeup时,我得到以下信息:UnhandledException:Microsoft.Build.BackEnd.NodeFailedToLaunchException:TheFileNamepropertyshouldnotbeadirectoryunlessUseShellExecuteisset.--->System.ComponentModel.Win32Exce