如何用LINQ找到列表中的第二大元素

本文关键字:元素 列表 何用 LINQ | 更新日期: 2023-09-27 18:15:53

假设我们有一个类(SomeClass),它有两个字段,ID类型为int,日期类型为DateTime。

现在假设有一个按日期排序的someeclass列表,我们需要找到列表的倒数第二个元素。我们如何在LINQ中做到这一点呢?

如何用LINQ找到列表中的第二大元素

var nextToLast = list.Skip(list.Count - 2).First();

正如@Brizio指出的,你也可以使用好的索引

var nextToLast = list[list.Count - 2];

第二名:

在你的比较中:

public class YourCustomClassComparer : IComparer<YourObject> {
    public int Compare(YourObject x, YourObject y) {
        //do whatever you need to do to compare
    }
}

和你的方法(这将抓取列表中的第二个)

var result = list.OrderBy(a => a, new YourCustomClassCompairer()).ElementAt(1);

如果你想要逆(我在你的问题中注意到),做以下

var result = list.OrderByDescending(a => a, new YourCustomClassCompairer()).ElementAt(1);