【发布时间】:2017-05-09 13:47:43
【问题描述】:
在阅读了有关将 Linq 与 SortedList 结合使用时会发生什么的文档后,我感到很困惑。
https://msdn.microsoft.com/en-us/library/ms132319(v=vs.110).aspx
我猜枚举是保证排序的,也可以按索引检索,但是 Values 和 Keys 呢?所有这些情况都安全吗?
var list = new SortedList<DateTime, object>();
//add entries here ...
var firstValue1 = list.Values[0];
var firstValue2 = list.First().Value;
var firstValue3 = list.Values.First();
var firstKey1 = list.Keys[list.Count-1];
var firstKey2 = list.First().Key;
var firstKey3 = list.Keys.First();
var sortedList = list.Where(x => x.Key > DateTime.Now)
.Select(x => x.Value);
【问题讨论】:
-
@EpicKip 它会准确地告诉你你得到了什么。枚举中的第一项。在很多情况下,这正是您所需要的。
-
@EpicKip:如果您对底层项目一无所知,那么您可能是对的,但在这种情况下,它是一个排序列表。你得到一个非常具体的东西。最早的项目,最新的项目,得分最高的项目......无论您的排序是什么,都定义了第一个项目是什么。你还会认为写
.OrderBy(x=>x.Thing).First()没有意义吗? -
@EpicKip 如果你不喜欢使用
SortedList,那就说那个。说使用First会给你一个“随机”元素,而客观上不这样做是完全错误的。说你不喜欢SortedList的设计(和一般的集合,从它的声音来看)以及它对你的代码的作用是一个意见问题,非常欢迎你持有。 -
@EpicKip:您应该确切地知道您的排序列表正在排序...该框架不只是选择一个随机项目来对您的列表进行排序,您可以准确地告诉它您想要什么。 .. 我怀疑你知道这一点,这只能归结为意见分歧。
-
@Chris 当然,没关系,我觉得我对我的 cmets 有点太仓促了,可能没有说出我想说的话,感谢您与像我这样的头脑发热并保持 100% 文明;)
标签: c# sortedlist