Tag: dictionary

如何通过LINQ to XML创建Dictionary ?

我有以下XML: 我有以下代码,我将得到一个Dictionary()对象 myObject.FootNotes 这样每条线都是一个键/值对 var doc = XElement.Parse(xmlString); var myObject = new { FootNotes = (from fn in doc .Elements(“FootNotes”) .Elements(“Line”) .ToDictionary ( column => (int) column.Attribute(“id”), column => (string) column.Attribute(“reference”) ) ) }; 我不确定如何将XML从XML转换为对象。 有谁能提出解决方案?

有什么能比Concurrent集合更好地解决这个multithreading场景

我有一个持久的B +树,多个线程正在读取树的不同块并对读取数据执行一些操作。 有趣的部分:每个线程产生一组结果,作为最终用户,我想在一个地方看到所有结果。 我做了什么:一个ConcurentDictionary和所有线程正在写它。 这一切都很顺利。 但是应用程序是时间关键的,一秒钟意味着完全不满意。 与Dictionary相比,ConcurentDictionary因为线程安全开销本质上很慢。 我可以使用Dictionary,然后每个线程都会将结果写入不同的词典。 但是我会遇到合并不同词典的问题。 。 我的问题: 并发集合是否适合我的场景? 如果不是(1),那么我将如何合并最佳不同的词典。 鉴于此, (a)逐个复制项目和(b) LINQ是已知的解决方案,并不像预期的那样最佳:) 如果不是(2);-)你会建议什么? 。 快速信息: #Thread = processorCount。 应用程序可以在标准笔记本电脑(即4个线程)或高端服务器(即<32个线程)上运行 物品数量。 该树通常拥有超过1.0E + 12项。

将列表元素分组到字典

我有一个包含8个元素的列表: ConfigFile.ControllerList 此列表的类型为: List 如何将ControllerList中的控制器添加到3个字典键中。 字典就像: Dictionary<int, List> ControllerDictionary = new Dictionary<int, List>(); 我想将前3个控制器添加到字典键0,然后想要将下3个控制器添加到字典键1,最后想要将最后2个控制器添加到字典键2.我怎么能这样做?

Dictionary :如何使用T作为Func的generics类型?

我不知道如何清楚地表达它。 我有这个界面: interface IConverter { Dictionary<Type, Func> ConversionMethods { get; } } 基本上,它定义了一个契约,说实现它的类应该为它使用的所有自定义类型(无论是枚举还是其他任何东西)提供转换方法。 是否有可能将Func的generics类型中的object替换为相应的字典键的类型(因此不可能有两种不匹配的类型)? 我认为这是不可能的,但替代方案有点烦人(使用dynamic或object ,创建专门的字典……)。 编辑1:虚构的使用例子 interface IConverter { Dictionary<Type, Func> GetConversionMethods(); } enum A { AA,AB,AC } enum B { BA, BB, BC } class blah : IConverter { public Dictionary<Type, Func> GetConversionMethods() { var d = new Dictionary<Type, Func> { { typeof(A), […]

Dictionary <int,List >

我有这样的事情: Dictionary<int, List> fileList = new Dictionary<int, List>(); 然后,我用一些变量填充它,例如: fileList.Add( counter, new List { OFD.SafeFileName, OFD.FileName, VERSION, NAME , DATE , BOX , SERIAL_NUM, SERIES, POINT , NOTE , VARIANT } ); 其中counter是每次发生某事时递增+1的变量, List{XXX}其中XXX是包含一些文本的字符串变量。 我的问题是,如果counter == 1,如何从列表中访问这些字符串?

LINQ查询列表中的字典

我有 List selectedOptions; Dictionary masterList; masterList由Keys组成,Keys是selectedoptions值的超集。 现在,我想提取selectedOptions和masterList之间相交键的所有值。 如何构建LINQ查询?

在c#中,如何在multithreading环境中迭代IEnumerable

我在这种情况下,有一个大字典,由一个线程以相当高的频率随机更新,还有另一个线程试图将字典的快照保存为历史记录。 我目前正在使用这样的东西: Dictionary dict = new Dictionary(); var items = dict.Values.ToList(); 这在大多数情况下都可以正常工作,除非它偶尔抛出: System.InvalidOperationException:集合已被修改; 枚举操作可能无法执行。 我理解为什么会这样,但我不知道我该怎么做才能避免收集修改错误。 迭代此类集合的最佳方法是什么? 我也试过ConcurrentDictionary,但没有运气。 为什么? ConcurrentDictionary线程只在项目级别安全吗?

TFS 2010:当我可以使用XamlReader进行反序列化时,为什么无法使用XamlWriter.Save反序列化Dictionary

public static string GetXml(Dictionary parameters) { return XamlWriter.Save(parameters); } 上面的语句返回NotSupportedException 。 奇怪的是我可以使用XamlReader来序列化字典。 public static Dictionary GetParameters(IBuildDetail buildDetail, string buildDefinition) { var tfsProject = buildDetail.BuildDefinition.TeamProject; var buildServer = buildDetail.BuildServer; var buildDef = buildServer.GetBuildDefinition(tfsProject, buildDefinition); using (var stringReader = new StringReader(buildDef.ProcessParameters)) { using (var xmlTextReader = new XmlTextReader(stringReader)) { return (Dictionary) XamlReader.Load(xmlTextReader); } } } XML: $(BuildDefinitionName) […]

如何调用Dictionary .TryGetValue()其中K:Predicate ,V:enum

我有Dictionary<Predicate, SomeEnum> : var dic = new Dictionary<Predicate, SomeEnum> { { (d) => d d > 90, SomeEnum.Bar } }; 我想像这样打电话给TryGetValue(K, out V) : dic.TryGetValue(99) 并收到 SomeStruct.Bar 但TryGetValue()第一个参数是Predicate ,而不仅仅是T 我怎么能做我想做的事? 我发现只有一个肮脏的解决方法: var kpv = dic.FirstOrDefault(p => p.Key(99)); if (kpv.Key != null) var result = kpv.Value; 还有其他方法吗? 或者如何正确实现我的想法? – 声明一个键不是一个常量,而是一个段。

字典使用是自定义键,但键始终不相等

我在字典中使用RTBTextPointer作为自定义键… Init.SpintaxEditorPropertyMain.SpintaxListDict = new Dictionary(new RTBTextPointerComparer()); 我在类库中编写RTBTextPointer和RTBTextPointerComparer类,并在不同的wpf项目中使用它, if (Init.SpintaxEditorPropertyMain.SpintaxListDict.ContainsKey(_index) == false) { Init.SpintaxEditorPropertyMain.SpintaxListDict.Add(_index,_SpintaxMappedVal); } everytime containsKey返回false,即使它包含,所以在字典中出现重复条目​​..我的“GetHashCode()”中有任何错误 public class RTBTextPointer { static int _row; static int _column; public int Row { get { return _row; } set { _row = value; } } public int Column { get { return _column; } set { _column = […]