Tag: 字典

C#:字典值到hashset转换

请建议将Dictionary转换为Hashset的最短路径 IEnumerables是否内置ToHashset() LINQ扩展? 先感谢您!

如何制作深拷贝字典模板

我有以下方法来制作字典的deep copy : public static Dictionary deepCopyDic(Dictionary src) { //Copies a dictionary with all of its elements //RETURN: // = Dictionary copy Dictionary dic = new Dictionary(); for (int i = 0; i < src.Count; i++) { dic.Add(src.ElementAt(i).Key, new MyClass(src.ElementAt(i).Value)); } return dic; } 我想知道,我可以以某种方式将其变成模板吗? 我需要MyClass作为模板。

如何重置字典

如果我宣布这样的字典: private static Dictionary aDict = new Dictionary(); 现在我想在另一个地方使用它。 我该如何重置它? aDict = new Dictionary(); // like this? aDict = null; // or like this? 或其他重置样式?

在C#中将值和键从一个字典复制到另一个字典的最快方法是什么?

似乎没有dictionary.AddRange()方法。 有没有人知道在不使用foreach循环的情况下将项目复制到另一个字典的更好方法。 我正在使用System.Collections.Generic.Dictionary。 这适用于.NET 2.0。

只读字典 – 多个线程调用.ContainsKey方法

我有一个静态只读字典。 不会对此词典进行任何修改。 我有多个线程使用.ContainsKey(Key)从这本字典中读取。 例如 class MyData { private static private IDictionary _dictionary = new Dictionary(); MyData() { // Load Dictionary here } public string GetValue(int key) { if (_dictionary.ContainsKey(key)) { return _dictionary[key]; } } } 这样做有任何线程问题吗?

C#应用程序如何为此实现字典或哈希表?

这是我的问题,我想写一个基本的控制台应用程序,我在其中输入日期作为输入,如果该日期尚未输入应用程序然后允许时间输入注释,即2013年7月7日时间5:00 – 晚上7点输入文字等等 然后应用程序将保持循环,如果我输入相同的日期,我不能输入与上面相同的时间,但我应该能够输入例如7:00到8。 我在考虑使用字典: Dictionary BookingDict = new Dictionary(); 并将日期添加为id,但似乎只能输入一个元素id 可以请一些人帮忙

迭代C#中的Regex字典

我有一个函数,可以找到并替换输入字符串text的正则表达式 public static string Replacements(string text) { string output = Regex.Replace(text, @”\b[a-zA-Z0-9.-_]+@[az][A-Z0-9.-]+\.[a-zA-Z0-9.-]+\b”,”email”); return output; } 假设我想将替换正则表达式放入字典中 static Dictionary dict1 = new Dictionary { {@”^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$”, “phoneno”}, {@”\b[a-zA-Z0-9.-_]+@[az][A-Z0-9.-]+\.[a-zA-Z0-9.-]+\b”,”email”}, }; 我想迭代字典来替换文本。 我该怎么办? 我在这里尝试使用forloop的解决方案: 在C#中迭代Dictionary的最佳方法是什么? public static string Replacements(string text) { string output = text; foreach (KeyValuePair item in dict1) { output = Regex.Replace(text, item.Key, item.Value); } return output; […]

C#并发,锁定和字典对象

我有一堆数据库实体加载到数据库对象中。 可以将相同的DB实体加载到多个DB对象中。 DB实体需要定期进行特殊处理。 此处理必须一次由一个线程执行。 在这里按顺序锁定。 编辑:重要说明:该过程调用慢速Web服务。 这就是我试图阻止并发的原因。 我不知道如何安全地完成没有锁。 所以我创建了一个“挂锁”对象,DB对象将引用该对象进行锁定。 挂锁对象是基于实体的,因此同一实体的两个或多个DB对象将使用相同的挂锁对象。 我使用数据库实体的ID作为密钥将这些挂锁存储在字典对象中。 挂锁对象也只是一个简单的字符串对象。 这是正确的方法吗? 我想我要么过度工程,要么简化这个。 如果方法是正确的,那么这段代码看起来如何? 它有效,但我还没有在负载下测试它。 谢谢 :) public static func(CustomObject o) { if (ReadyForUpdate(o)) { lock (LookupPadLockByID(object.ID) { if (ReadyForUpdate(o)) { PerformUpdate(object); } } } } private static readonly object padlockLock = new object(); private static readonly Dictionary padLocks = new Dictionary(); private static […]

字典排序

我正在使用这个var ordered = dictionary.Keys.OrderBy(x => x); 订购字典。 这很好地按字母顺序排列字典,我希望保持这种方式并添加一些例外…… 所以现在,有序字典对于输出看起来像这样: 1: “0603C” “113456” 1 2: “0603C” “984132” 8 3: “0603R” “11115” 3 4: “0603R” “13554” 1 5: “1608C_1.0” “119764” 2 6: “1608C_1.0” “147429” 54 7: “1608R_1.0” “122951” 4 8: “1608R_1.0” “147446” 1 9: “1608R_1.0” “147448” 23 10: “3216” “110762” 2 11: “TANT23” “119764” 2 //more here… […]

如何使用具有相同键的两个不同词典的值来构建新词典

假设我们有两个带有以下键对值的字典: 字典1:[{1,abc} {2,cde} {3,efg}] 字典2:[{1,123} {2,234} {3,345}] 我想创建一个字典如下:字典3:[{abc,123} {cde,234} {efg,345}] fieldValues = new List<List>(); docFieldKey = new List<List>(); docFieldValueDict = new Dictionary<string, List>(); docKeyDict = new Dictionary<string, List>(); iterateDocKeyDict = new List(); iterateDocFldValueDict = new List(); //To read row wise and store key and all values for (limit = 0; limit < docNames.Count; limit++) { […]