草庐IT

level1Dictionary

全部标签

c# - IEnumerable<T> 到 Dictionary<string, IEnumerable<T>> 使用 LINQ

拥有IEnumerableorders,如何获得Dictionary>使用Linq,其中键是Order.CustomerName映射到IEnumerable客户的订单。orders.ToDictionary(order=>order.CustomerName)不会立即生效,因为可能有多个订单具有相同的CustomerName。解决方案:orders.ToLookup(order=>order.CustomerName); 最佳答案 ILookup接口(interface)就是为此目的而设计的,它代表一个类似字典的结构,每个键包含许多

c# - 将 Dictionary<string, string> 转换为单个聚合字符串表示的最佳方法?

如何将键值对字典转换为单个字符串?可以使用LINQ聚合来做到这一点吗?我见过使用字符串列表而不是字典执行此操作的示例。输入:Dictionarymap=newDictionary{{"A","Alpha"},{"B","Beta"},{"G","Gamma"}};输出:stringresult="A:Alpha,B:Beta,G:Gamma"; 最佳答案 这是我能想到的最简洁的方式:varresult=string.Join(",",map.Select(m=>m.Key+":"+m.Value).ToArray());如果您使用的

c# - 谁在 Dictionary<>.First() 上?

这个问题在这里已经有了答案:Getfirstelementfromadictionary(9个回答)关闭4年前。当您在Dictionary集合的实例上调用它时,.NET3.5扩展方法Enumerable.First()的含义是什么?这组键决定了哪个项目是第一个,还是只是没有定义?

c# - 在 C# 中,为什么 dictionary[0]++ 有效?

考虑以下C#代码:vard=newDictionary();d[0]=0;d[0]++;这段代码执行后d[0]的值是多少?我期望d[0]==0,因为Dictionary的Item属性返回一个值类型int,大概在堆栈上,然后递增。然而,令人惊讶的是,当您实际运行这段代码时,您会发现d[0]==1。上面的示例表现得好像索引器正在返回引用类型,但现在考虑以下内容:vard=newDictionary();d[0]=0;vara=d[0];a++;这段代码执行后d[0]的值是多少?这次我们得到了预期的d[0]==0,因此索引器肯定没有返回引用。有人知道为什么我们会看到这种行为吗?

c# - Dictionary.ContainsKey() - 它是如何工作的?

我已阅读有关Dictionary.ContainsKey()工作原理的MSDN文档,但我想知道它实际上是如何进行相等比较的?基本上,我有一个键控到引用类型*的字典,我希望ContainsKey()方法检查该引用类型的某个属性,以此作为确定键是否存在的基础。例如,如果我有一个Dictionary(MyObject,int)并且MyObject有一个名为“TypeID”的公共(public)属性(int),可以我得到ContainsKey(MyObjectmyObject)来检查其中一个键是否有等于myObject的TypeID?我可以重载==运算符吗?引用类型是一个名为“Duration

c# - 将 Dictionary<T> 绑定(bind)到 WPF 列表框

给定字典,你会如何绑定(bind)dictionary.Values到WPF列表框,以便项目使用.Name属性(property)?structDrink{publicstringName{get;privateset;}publicintPopularity{get;privateset;}publicDrink(stringname,intpopularity):this(){this.Name=name;this.Popularity=popularity;}} 最佳答案 设置ItemsSource在项目控件上创建到源对象枚举

c# - 具有多个并发读取器且没有写入器的 Dictionary<TKey, TValue> 的线程安全

如果我初始化一个通用字典一次,并且不允许进一步添加/更新/删除,那么让多个线程在没有锁定的情况下读取它是否安全(假设字典在读取器启动之前初始化)?在非通用HashTable的帮助中有一条注释说它对多个读者是安全的,但我没有看到与通用字典类似的内容。 最佳答案 为了您将来的引用,文档位于此处:http://msdn.microsoft.com/en-us/library/xfhwa508.aspx它说:ADictionarycansupportmultiplereadersconcurrently,aslongasthecollect

c# - 是否有没有唯一键的 Dictionary<Key,Value>?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Duplicatekeysin.NETdictionaries?我需要创建一个Collection,一个是字符串,另一个是对象。我不能使用字典,因为没有任何项目是唯一的。有没有办法创建List?因为我不想创建一个对象来保存这两个值只是为了在单个foreach循环中使用它。谢谢

c# - 反向多对多 Dictionary<key, List<value>>

实际上mypreviousquestion让我思考我意识到反转Dictionary不是微不足道的。最优雅、最易读的方法是什么?同场景学生多对多同类原创Dicitonary>其中键是studentId,值是List包含classId并希望恢复为Dictionary>谢谢更新:实际上,我刚刚测试了Luke和Bruno的解决方案,他们会返回正确数量的类(class),无论他们都有相同的学生,都会随着我的进行而更新。 最佳答案 反转字典非常简单:varnewDic=oldDic.ToDictionary(x=>x.Value,x=>x.Ke

c# - ConcurrentDictionary<TKey,TValue> 与 Dictionary<TKey,TValue>

作为MSDNsaysConcurrentDictionaryClass表示一个线程安全的键值对集合,可以被多个线程同时访问。但据我所知,System.Collections.Concurrent类是为PLINQ设计的。我有Dictionary它将在线客户端保持在服务器中,当我可以访问它时,我通过锁定对象使其线程安全。我可以安全地替换Dictionary吗?通过ConcurrentDictionary在我的情况下?更换后性能会提高吗?Here在第5部分中,JosephAlbahari提到它是为并行编程而设计的并发集合针对并行编程进行了调整。传统集合在除高并发场景外的所有场景中都优于它们。