如何用LINQ找到列表中的第二大元素
本文关键字:元素 列表 何用 LINQ | 更新日期: 2023-09-27 18:15:53
假设我们有一个类(SomeClass),它有两个字段,ID类型为int,日期类型为DateTime。
现在假设有一个按日期排序的someeclass列表,我们需要找到列表的倒数第二个元素。我们如何在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);