Tag: dictionary

Dictionary to List <KeyValuePair >其中KeyValuePair中的值为MyClass.ToString()

Dictionary dict = new Dictionary(); //where MyClass has an override for ToString() 现在如何从dict获取List<KeyValuePair> ,其中KeyValuePair中的值,如果MyClass.ToString()和KeyValuePair中的Key与dict的相同…? 有一个简单的方法吗? 我怎么能在那里使用IDictionary.ToList()函数? Plz启发..

我应该使用哪种数据类型和方法?

我正在尝试编写一种简单的搜索引擎。 我有确定数量的与特定关键字相关的主要主题。 目的是从输入的部分关键字识别主要主题。 我正在考虑使用: Dictionary<string, List> 。 我将不得不在这个字典中搜索并找到例如以3个字符的string开头的所有关键字以及它们相关联的主要主题。 我的解决方案是最好的吗? 如何有效地查看这些数据,而无需手动检查每个List ,逐string 。 如果我不清楚,请告诉我。

使用AzureSearch SDK与30-40 ISearchIndexClients的静态字典的含义

我有一个ASP.NET Web应用程序,它在5-6个搜索服务中使用30-40个不同的搜索索引(不同的客户端在不同的定价层中)。 目前,我正在编组一个新的ISearchServiceClient实例,然后根据发出调用的客户端为所需的特定索引提供相应的ISearchIndexClient 。 为了提高性能,我考虑在应用程序启动时整理所有ISearchIndexClients并将它们放入Dictionary对象: public static Dictionary SearchIndexes; 这样就可以直接从静态字典中调用任何特定的索引并像这样使用: SearchIndexes[“IndexName”].Documents.Search(searchText, searchParameters); 我希望这会加快查询和索引更新时间,特别是在“热门”索引上。 我担心的是,这可能会引入内存泄漏,性能问题和其他未知因素。 我没有看到使用静态可用的SearchServiceClient或SearchIndexClient的任何示例,所以我对这种方法有点不安。 我对社区的问题是: 我的计划听起来不错? 它实际上会提高性能吗? 有什么缺点或影响(如果有的话?) 如果指数的数量随着时间的推移而增加(例如60-70),那么我会开始看到弊端吗? 将SearchServiceClients编组到字典中并根据需要从那里连接到相应的SearchIndexClient会更有意义: public static Dictionary SearchServices; var searchIndexClient = SearchServices[“ServiceName”].Indexes.GetClient(“IndexName”); searchIndexClient.Documents.Search(searchText, searchParameters);

线程安全的SortedDictionary

我创建了一个使用SortedDictionary来存储和操作数据的类。 除非在multithreading环境中实现,否则该类很有效。 现在,我想通过为内部SortedDictionary类编写包装类来使类线程安全。 我想使用Reader-Writer Locks来实现它,但是现在,我在编写包装器本身时遇到了问题。 具体来说,我不确定如何为字典实现Enumerator 。 这是我现在的完整代码。 public class ConcurrentSortedDictionary : IEnumerable<KeyValuePair> { #region Variables SortedDictionary _dict; #endregion #region Constructors public ConcurrentSortedDictionary() { _dict = new SortedDictionary(); } public ConcurrentSortedDictionary(IComparer comparer) { _dict = new SortedDictionary(comparer); } public ConcurrentSortedDictionary(IDictionary dictionary) { _dict = new SortedDictionary(dictionary); } public ConcurrentSortedDictionary(IDictionary dictionary, IComparer comparer) { _dict = […]

列表与字典(最大大小,元素数)

我试图确定列表和字典的最大大小(在RAM中)。 我也很好奇每个元素/条目可容纳的最大数量,以及每个条目的内存占用量。 我的理由很简单:我和大多数程序员一样,有些懒惰(这是一种美德)。 当我编写程序时,我喜欢编写一次程序,并尝试尽可能地进行未来validation。 我目前正在编写一个使用Lists的程序,但注意到迭代器需要一个整数。 由于我的程序的function仅受可用内存/编码样式的限制,我想编写它以便我可以使用带有Int64s的List或可能使用BigInts(作为迭代器)。 我在这里看到IEnumerable是一种可能性,但是想知道我是否可以将Int64填入Dictionary对象作为键,而不是重写所有内容。 如果可以的话,我想知道与重写它相比可能会花费多少。 我的希望是,如果我的程序certificate有用,我只需要在5年内重新编译,以利用内存的增加。

构建列表中项目计数的字典

我有一个包含一堆可以多次出现的字符串的List。 我想获取此列表并构建列表项的字典作为键和它们的出现次数作为值。 例: List stuff = new List(); stuff.Add( “Peanut Butter” ); stuff.Add( “Jam” ); stuff.Add( “Food” ); stuff.Add( “Snacks” ); stuff.Add( “Philosophy” ); stuff.Add( “Peanut Butter” ); stuff.Add( “Jam” ); stuff.Add( “Food” ); 结果将是包含以下内容的字典: “Peanut Butter”, 2 “Jam”, 2 “Food”, 2 “Snacks”, 1 “Philosophy”, 1 我有办法做到这一点,但似乎我没有利用C#3.0中的好东西 public Dictionary CountStuff( IList stuffList ) { Dictionary […]

C#6的新集合初始化程序 – 澄清?

我读过: 该团队一直忙于实施初始化程序的其他变体。 例如,您现在可以初始化Dictionary对象 但看着: var Dic = new Dictionary{ {“x”,3}, {“y”,7} }; VS var Dic = new Dictionary{ [“x”]=3, [“y”]=7 }; 我不知道好处在哪里。 它看起来一样。 两者都只是一个名值集合。 他们用成对的方括号和一些逗号交换成对的花括号 题: 使用新语法的附加值是什么? 一个现实世界的例子将非常感激。

使用linq将字典值转换为列表

下面的代码给我“lambda表达式的评估在调试器中无效”。 请从下面建议我做错的地方 – List lstFiedls; lstFiedls = objDictionary.Select(item => item.Value).ToList(); 谢谢,

C#Linq .ToDictionary()密钥已经存在

最终编辑:我能够找到ini文件中的重复字段。 谢谢大家的帮助! 我正在使用正则表达式来解析ini文件,使用LINQ将其存储在Dictionary中: 样本数据: [WindowSettings] 窗口X Pos =’0′ 窗口Y Pos =’0′ Window Maximized =’false’ 窗口名称=’Jabberwocky’ [记录] 目录=’C:\ Rosetta Stone \ Logs’ 编辑:这是实际导致问题的文件: http : //pastebin.com/mQSrkrcP EDIT2:我把它缩小到由文件的最后一部分引起:[list_first_nonprintable] 由于某种原因,我正在解析的文件之一是抛出此exception: System.ArgumentException:已添加具有相同键的项。 有没有办法让我找出导致问题的键(所以我可以修复文件),或者只是跳过导致这个问题的键并继续解析? 这是代码: try { // Read content of ini file. string data = System.IO.File.ReadAllText(project); // Create regular expression to parse ini file. string pattern = @”^((?:\[)(?[^\]]*)(?:\])(?:[\r\n]{0,}|\Z))((?!\[)(?[^=]*?)(?:=)(?[^\r\n]*)(?:[\r\n]{0,4}))*”; //pattern […]

C#合并2个词典

我正在开发一个面向.NET 3.5的C#应用​​程序。 在其中,我有2个类似的词典,其中包含我的应用程序中特定元素集的validation标准。 两个词典都有相同的签名。 第一个字典具有默认设置,第二个字典包含一些用户定义的设置。 var default_settings = new Dictionary(); var custom_settings = new Dictionary(); 我想将2个词典合并为一个包含两个词典元素的词典。 我遇到的问题是两个字典都可能具有一些相同的键值。 我想要的基本规则是将两个字典组合在一起,如果default_settings中已存在custom_settings中的任何键,则custom_settings值将覆盖default_settings值。 我拥有的最佳解决方案只是一个foreach循环,检查密钥是否存在于另一个字典中,如果不存在,则添加它。 foreach (var item in custom_settings) { if (default_settings.ContainsKey(item.Key)) default_settings[item.Key] = item.Value; else default_settings.Add(item.Key, item.Value); } 我已经完成了一些基本的LINQ查询,但我仍在努力学习更高级的东西。 我已经看到了一些会合并2个词典的查询,但大多数都涉及将任何元素分组为重复键,或者只返回一个只有重复键的集合/是否有一个LINQ查询或表达式,它将模仿foreach循环的行为我在用?