使用 Linq 获取第 N 个值

38

如何使用 Linq 获取第 N 行?由于两列都是文本,因此无法使用 min/max。

5个回答

53
var nthItem = items.Skip(n).First();

3
Skip(int count) 的意思是跳过指定数量的元素后返回剩余的元素。所以如果我们跳过n个元素,我们得到的是第n个元素的索引而不是第n个元素(从1开始计数),对吗?就像这个答案中所说的:https://dev59.com/gnRA5IYBdhLWcg3wyRJ7#824652 - ErTR

32

另一种选择(.Net 3.5及更高版本)是使用ElementAtOrDefault。

var nthItem = items.ElementAtOrDefault(n-1);

该方法的索引是从零开始计算的,因此如果您想获取第三个元素,您需要将索引传递为2。


6
您可以使用跳过(skip)和获取(take)的方法。
var result = myData.OrderBy(<your order by>).Skip(5).Take(1);

1
Take 不返回一个元素,而是返回一个序列(在这种情况下只有一个元素)。 - Mark Seemann
@Mark:确实如此,我认为我们最好给OP提供两个选项。 - cjk

4
var nthItem = items.Skip(n-1).FirstOrDefault();

0

你可以使用带有 skip 的 order by

var nthItem = items.OrderByDescending(<your order by>).skip(n-1).FirstOrDefault();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接