如何有效地返回C#中SortedList <>中的第一项和最后一项?

Hyr*_*ial 1 c# sortedlist

我的问题就像下面的问题,但SortedList<Tkey, TValue>不仅仅是原始问题SortedList

返回C#中SortedList中的第一个元素

似乎没有像这样的函数GetKey()

Moh*_*ish 7

您可以简单地使用list.FirstOrDefault()list.LastOrDefault()

default(KeyValuePair<TKey,TValue>)如果列表为空,则将返回这两种方法。

并且最好使用它们,因为如果列表为空list.First()list.Last()则使用和会抛出错误。

  • 实际上,“ KeyValuePair &lt;TKey,TValue&gt;”是一个结构,因此,如果列表为空,这些方法将返回“ default(KeyValuePair &lt;TKey,TValue&gt;)”。 (2认同)

vc *_* 74 5

根据您(不太清楚)的问题,您想检索列表中第一个和最后一个项目的键。

SortedList<TKey, TValue>实现IEnumerable<KeyValuePair<TKey,TValue>>这样做:

sortedList.FirstOrDefault().Key
Run Code Online (Sandbox Code Playgroud)

sortedList.LastOrDefault().Key
Run Code Online (Sandbox Code Playgroud)

将返回这些键

编辑:正如@mjwills 所建议的那样,就Keys性能而言,使用该属性是一个更好的主意,因为它实现IList<TKey>LastOrDefault针对此类情况进行了优化(不获取整个集合以到达最后一个项目):

sortedList.Keys.FirstOrDefault()
sortedList.Keys.LastOrDefault()
Run Code Online (Sandbox Code Playgroud)