草庐IT

字典序法

全部标签

c# - 字典 : search key strings with a like feature

我想用类似的功能在字典中搜索我的关键字。我想拿key以“a”开头或者他们的第三个字母是“e”或者他们的第四个字母不是“d”在sql中可以编写查询“where(keylike'a')and(keynotlike'd__')“我想拥有这个功能对于字典。您有什么算法建议吗?谢谢! 最佳答案 虽然这将是表扫描的SQL等效项,但您可以使用LINQ或IEnumerable用于在字典中搜索其键与模式匹配的所有值的扩展方法:扩展方法:varvalues=dictionary.Where(pv=>pv.Key.StartsWith("A")||(pv

c# - 按值对字典(字符串,整数)进行排序

所以基本上我对交给我的任务有疑问。我不会让您厌烦任务本身的细节,所以我只会为您提供相关信息。我有一本字典,我需要按最高的int[value]排序,准确地说是前五名,我还需要能够显示后五名。Dictionarydict=newDictionary();字符串(键)包含已为文本文件读取的单词。整数(值)保存它们在文档中被提及的次数。我本来打算用另一种方式来做,但有人告诉我要用字典来做,所以请字典帮忙。如果您能解释应该如何完成,我将不胜感激,这样我就可以学习并完成任务,因为该任务的目的是self教育,但我发现它有点困难..非常感谢您提前提供的所有帮助,如果需要更多信息,请告诉我,我会发布!

c# - 双重检查字典 "ContainsKey"上的锁定

我的团队目前正在讨论这个问题。有问题的代码是if(!myDictionary.ContainsKey(key)){lock(_SyncObject){if(!myDictionary.ContainsKey(key)){myDictionary.Add(key,value);}}}我看到的一些帖子说这可能是一个很大的NONO(当使用TryGetValue时)。然而,我们团队的成员说这没问题,因为“ContainsKey”不会迭代key集合,而是通过O(1)中的哈希码检查key是否包含在内。因此他们声称这里没有危险。我想听听您对这个问题的诚实意见。 最佳答案

c# - 以对象为值的字典

我在这里疯了。这可能是因为我错过了一些规则,但如果是这样,请告诉我。我正在尝试创建一个Dictionary,其中一个字符串作为键,一个匿名对象作为值。或者,实际上我不只是在尝试,我正在做。但是当我想改变对象中的特定参数时,它出错了。我这样声明字典:varareas=newDictionary{{"Key1",new{name="Name1",today=0,all=0}},{"Key2",new{name="Name2",today=0,all=0}},...}然后我假设我可以做到这一点:foreach(varareainareas.Keys.ToArray()){varareanam

c# - 可以将访问频率较低的元素保存到磁盘的字典

在我的应用程序中,我使用字典(支持添加、删除、更新和查找),其中键和值都可以序列化或可以序列化(值可能是非常大的对象图)。当字典变得如此之大以致于将它完全保存在内存中开始偶尔触发OutOfMemoryException(有时在字典方法中,有时在代码的其他部分)时,我遇到了一个问题。在尝试用数据库完全取代字典后,性能下降到无法接受的水平。对字典使用模式的分析表明,通常只有一小部分值是“热”值(经常访问),而其余部分(大部分)是“冷”值(很少或从不访问)。很难说什么时候添加新值是热值还是冷值,而且,随着时间的推移,一些值可能会在热值和冷值之间来回迁移。我认为我需要一个字典的实现,它能够在低

c# - json.net:为字典键指定转换器

我有一个JSON:{"data":{"A":5,"B":6},"foo":"foo","bar":"bar"}我需要将数据反序列化为一个类:publicDictionaryData{get;set;}publicstringFoo{get;set;}publicstringBar{get;set;}但MyEnum值是CodeA和CodeB而不是简单地分别是A和B。我有一个可以处理转换的自定义转换器。但是我如何指定一个JsonConverter来与字典键一起使用呢? 最佳答案 我相信唯一的方法是为整个Dictionary制作一个Jso

c# - 使用 LINQ 创建字典并避免 "item with the same key has already been added"错误

我想在字典中找到一个键,如果找到则替换值,如果找不到则添加键/值。代码:publicclassMyObject{publicstringUniqueKey{get;set;}publicstringField1{get;set;}publicstringField2{get;set;}}LINQ解决方案(抛出已添加具有相同键的项目。):DictionaryobjectDict=csvEntries.ToDictionary(csvEntry=>csvEntry.ToMyObject().UniqueKey,csvEntry=>csvEntry.ToMyObject());ForEach

c# - 从静态对象中包含的 C# 字典中释放内存

我在使用WCFWeb服务时遇到了一些问题(一些转储、内存泄漏等),并且我运行了一个profillng工具(ANTS内存配置文件)。只是为了发现即使处理结束(我运行特定测试然后停止),第2代也有25%的内存用于Web服务。我追踪这段内存,发现我有一个充满(null,null)项目的字典对象,哈希码为-1。Web服务的工作流意味着在特定的处理过程中,项目被添加然后从字典中删除(只是简单的Add和Remove)。没什么大不了的。但似乎在删除所有项目后,字典中充满了(null,null)KeyValuePair秒。实际上有数千个,以至于它们占据了很大一部分内存并最终发生溢出,相应的强制应用程序

c# - 是否可以对字典字符串键进行部分字符串匹配?

我有一个Dictionary>在我以下列方式使用的代码中:KeyValues2011-07-151,2,32011-07-204,5,62010-02-117,8,9我的代码需要能够查询与键中特定子字符串匹配的所有值。例如,如果我有子字符串2011-07它应该返回值{1,2,3,4,5,6}.11的子串应该从1-9返回所有ID.任何人都可以推荐一种简洁的方法来实现这一目标吗?或者提供更好的数据结构来检索这些信息? 最佳答案 我会做一个扩展方法:publicstaticclassDictionaryExt{publicstaticIE

c# - 如何用异步调用的结果来补充字典?

假设我有这样的代码:publicasyncTaskDoSomethingReturnString(intn){...}int[]numbers=newint[]{1,2,3};假设我想创建一个包含调用DoSomethingReturnString的结果的字典对于每个类似于此的数字:Dictionarydictionary=numbers.ToDictionary(n=>n,n=>DoSomethingReturnString(n));那是行不通的,因为DoSomethingReturnString返回Task而不是string.智能感知建议我尝试将我的lambda表达式指定为异步,但这