如何解决从C#中的字典值排序并取N
我有一个用C#编写的字典。
Dictionary originalMap = new Dictionary<string,List<CustomObject>>();
originalMap contents:
"abc" -> {CustomObject1,CustomeObject2,..CustomObject100};
"def" -> {CustomObject101,CustomObject102,CustomObject103};
现在,最后,我要确保上述所有定制对象的数量不超过限制-例如200。 在执行此操作时,我要确保我获得排名前200位的对象(按得分属性排序)。
我在下面尝试过,但是没有用。它返回相同数量的对象。
var modifiedMap = new Dictionary<string,IList<CustomObject>>(CustomObject);
modifiedMap = originalMap.OrderByDescending(map => map.Value.OrderByDescending(customObject => customObject.Score).ToList().Take(200))
.ToDictionary(pair => pair.Key,pair => pair.Value);
任何帮助将不胜感激。 谢谢。
解决方法
您只在进行订购时执行限位部分,而不是在实际创建新词典时。
听起来您想要类似的东西
var modifiedMap = originalMap.ToDictionary(
pair => pair.Key,pair => pair.Value.OrderByDescending(co => co.Score).Take(200).ToList());
请注意,对字典条目本身进行排序是没有意义的,因为Dictionary<TKey,TValue>
本质上不是有序集合。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。