【C#中哈希表(HashTable)的用法详解以及和Dictionary比较】教程文章相关的互联网学习教程文章

C#Dictionary不能添加重复键的解决方法

重载了一个方法: public class RepeatDictionaryComparer : IEqualityComparer<string>{public bool Equals(string x, string y){return x != y;}public int GetHashCode(string obj){return obj.GetHashCode();}}调用:Dictionary<string, string> _dic = new Dictionary<string, string>(new RepeatDictionaryComparer());这样重复的键也可以添加了

c# – 如何遍历从JsonResult方法返回的Dictionary?【代码】

我有一个JavaScript方法,它对控制器方法进行AJAX调用.此控制器方法是一个JsonResult方法,它将字典对象返回给我的JavaScript.但是我对这个对象做的任何事情(比如,dictionaryObject.count,dictionaryObejct [i] .value等)给了我“undefined”.有关如何使用此对象的任何想法?function MakeControllerMethodCallFunction(stringParam1, stringParam2) {// Remove all rows from table so that table can have latest data$('#TableMod...

c# – 使用Dictionary中的相同键连接值【代码】

我需要结合2个字典.它们具有不同值的相同密钥(KKK): Dictionary<string, string> dic1 = ...Load***(); Dictionary<string, string> dic2 = ...Load***();DIC1:... [29] {[RCP, 555501001]} [30] {[KKK, 04611105012042000120]} ...DIC2:... [49] {[SUM, 85737]} [50] {[KKK, 04611701040040000180]} ...联盟:Dictionary<string, string> dicUnion= dic1.Union(dic2).OrderBy(k => k.Key).ToDictionary(kvp => kvp.Key, kvp =>...

c# – 使用Linq将Dictionary转换为Dictionary【代码】

我可以使用for循环进行转换,但是有一个Linq语句可以用作单行程序吗?解决方法:您可以使用:var newdict = original.ToDictionary(kvp => kvp.Key, kvp => (float)kvp.Value);

c# – 将IEnumerable转换为Dictionary【代码】

在向方法Splitter添加bool distinct并检查distinct是否为true之后,代码中断了.问题现在而不是字典是IEnumerable< string>,但是应该是Dictionary< string,int>.怎么可以解决? 这是错误:Cannot implicitly convert type ‘System.Collections.Generic.IEnumerable’ to ‘System.Collections.Generic.Dictionary’. An explicit conversion exists (are you missing a cast?)和代码:private Dictionary<string, int> Splitter(str...

c# – 如何将List转换为Dictionary,用null填充值?【代码】

我试图用List作为键来填充一个Dictionary,并将null作为值.我怎样才能实现这一目标?我在C#编程 谢谢.解决方法:您还可以使用Linq Enumerable.ToDictionary,将键和值指定为null:var myList = new List<string> { "first", "second" }; Dictionary<string, string> dict = myList.ToDictionary(item => item, // key item => (string)null // value );请注意,您需要将“null”强制转换为元素类型,否则C#无法推断第二个lambd...

c# – 我如何更改Dictionary以便它返回自定义默认值而不是在没有这样的键时抛出异常?

如何改变字典的工作方式,这样如果没有给定键的KVP,它会返回一个默认值,而不用try-catch包装通常的dic [“nonexistentKey”]?解决方法:您可以创建自己的类,其中包含Dictionary< TKey,TValue>,并实现IDictionary< TKey,TValue>. 这将表现得像字典,但您可以编写行为以任何方式处理您不存在的键. 但是,你无法改变实际字典的方式< TKey,TValue>类功能.

c# – 通过使用LINQ跳过空值将Dictionary转换为Dictionary【代码】

我有以下产品类:public class Product {public string Name { get; set; }public float Price { get; set; } public int? CategoryId { get; set; } }现在我必须计算每个CategoryId的产品数量,并将它们放在Dictionary< int,int>中.因此:IQueryable<Product> products = _productServices.GetAll(); //return IQueryable<Product>Dictionary<int, int> productDict = products.ToList().GroupBy(p => p.CategoryId).ToDictio...

c# – Dictionary.cs中的FindEntry函数【代码】

我一直在研究.NET的字典实现,因为我想了解是什么让字典ContainsKey和快速查找:http://referencesource.microsoft.com/#mscorlib/system/collections/generic/dictionary.cs,15debc34d286fdb3 ContainsKey函数基本上导致下面列出的FindEntry: buckets是一个整数数组,entry是一个Entry对象数组,它们是包含HashCode,TKey和TValue的结构体. 所以我理解这个查找很快,因为它是一个简单的数组查找.private int FindEntry(TKey key) {if(...

c# – Dictionary ToList序列化的问题【代码】

我尝试使用ToList选项序列化字典的值.我发现在deserializtion过程中,我对所有序列化的对象都获取了null当我使用内存流时它没有发生,当我使用.Net对象作为字典中的类型时没有发生.下面是我创建的示例代码,用于显示问题这段代码的输出是字典:0-0字典:1-1清单:0清单:1字典:0-Null字典:1-Null清单:0class Program {static void Main(string[] args){A state = new A();Stream stream = File.Open("D:\\temp\\temp.txt", FileMod...

c# – 我的IEquatable仍在使用Object.GetHashcode for Dictionary []【代码】

我有类似下面的东西作为通用字典的关键.class IMyClass<T> : IEquatable<IMyClass> where T : struct {//etc }class MyClass<T> : IMyClass<T> where T : struct {public bool Equals(IRatingKey<T> other){//etc} }根据我对EqualityComparer< T> .Default的理解,应该看到我已经实现了IEquatable< T>因此可以动态创建EqualityComparer.Dictionary<TKey, TValue> requires an equality implementation todetermine whether keys are...

c# – 在Dictionary <>子类中重命名Key和Value属性的最简单方法是什么【代码】

我有一个复杂的数据容器,有多层嵌套字典. 但是具有Key和Value属性会使其不直观且难以使用. 请建议在Dictionary<,>中重命名Key和Value属性的最简单方法子类. 更新: Patryk?wiek:如果你实现IDictionary< TKey,TValue>,你也不能重命名属性,因为它们是合同的一部分. 你是对的.我的问题不正确.在IDictionary中使用KeyValuePair会将对属性限制为Key和Value.因此,如果我们想要非Key / Value对,我们必须使用自定义KeyValuePair结构来实现...

c# – 使用Json.NET将JObject的一部分转换为Dictionary【代码】

我正在测试Json.Net以准备一个不同的项目,我遇到了一些麻烦.我想要做的是将moretests的内容转换为Dictionary.这是我的完整代码:class Program {static void Main(string[] args){string json = @"{'test': 'a','test2': 'b','moretests':{'test3': 'c','test4': 'd'}}";JObject parsed = JObject.Parse(json);IDictionary<string, JToken> results = (JObject)parsed["moretests"];Dictionary<string, string> results2 = results...

c# – Dictionary中的复合键;覆盖GetHashCode(),Equals等或使用结构?

我有很多字典,其中键是几个不同值(主要是字符串和整数)的组合.我是否将这些键实现为类(并覆盖GetHashCode(),Equals()等)或者我是否使用struct? ReSharper可以轻松完成覆盖,但代码看起来很糟糕.是否有使用结构的性能影响?解决方法:如果您唯一的问题是在Dictionary< TKey,TValue>中使用定义相等性.然后您可以选择的另一个路径是实现IEqualityComparer< T>.这可以手动传递给字典构造函数,并负责TKey值的相等比较,而无需修改密钥类型...

c# – 将空数组序列化和反序列化为Dictionary / object【代码】

我正在开发一个必须与PHP 5.2.13服务器应用程序通信的Silverlight 3应用程序.我们正在使用JSON.NET来完成这项工作,但我在使用词典方面遇到了一些问题. 我正在做一些实验并尝试反序列化包含Dictionary的对象:public Dictionary<string, Block> Table {get { return m_table; }set { m_table = value; } }C#序列化正确,我很满意,但在PHP方面,当序列化具有空表的等效对象时,它将无法正常工作.$this->Table = array();问题是,显然,空数...