
C#4.0泛型SortedList:http://msdn.microsoft.com/en-us/library/ms132319(v=vs.100).aspx
public Trait getTrait(decimal thisValue){ if (ParentStructure != null && ParentStructure.RankedTraits.Count > 0) { SortedList<decimal,Trait> tempTraits = this.RankedTraits; // Improve here (union?) foreach (keyvaluePair<decimal,Trait> kvp in (ParentStructure.RankedTraits)) { if (!tempTraits.ContainsKey(kvp.Key)) { tempTraits.Add(kvp.Key,kvp.Value); } } return _getTrait(tempTraits,thisValue); } } return _getTrait(_rankTraits,thisValue);}@H_404_5@ 我认为联合而不是foreach循环会更快,但我不知道如何在SortedList上实现联合.如果有人可以帮助我,我会很感激.
此外,如果有更好的方法来做到这一点,我愿意接受建议.
@R_404_6120@ 我可以想到合并两个SortedList实例的唯一方法是将它们合并,然后转换为查找,然后抓取查找集合的第一个元素来创建字典. 我需要创建一个字典,因为SortedList只支持逐个添加.因此,唯一的另一种选择是将字典注入SortedList构造函数.
一句话:我认为你现在的代码是相当不错的. liNQ可以帮助将代码减少到大约2行(如果你是受虐狂,则可以使用一行).
SortedList<decimal,Traits> ListA = new SortedList<decimal,Traits>();SortedList<decimal,Traits> ListB = new SortedList<decimal,Traits>();ListA.Add(1m,new Traits { FIEldname = "One" });ListA.Add(2m,new Traits { FIEldname = "Two" });ListA.Add(3m,new Traits { FIEldname = "Three" });ListB.Add(1m,new Traits { FIEldname = "One" });ListB.Add(4m,new Traits { FIEldname = "Four" });ListB.Add(5m,new Traits { FIEldname = "Five" });var ListUnion = ListA.Union(ListB).Tolookup(k => k.Key,v => v.Value) .ToDictionary(k => k.Key,v => v.First());var ListMerged = new SortedList<decimal,Traits>(ListUnion);@H_404_5@ 总结 以上是内存溢出为你收集整理的C#合并两个SortedLists(Union?)全部内容,希望文章能够帮你解决C#合并两个SortedLists(Union?)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)