如果获得第一行/最后一行如下:
TableRow lastRow = theTable.Elements<TableRow>().Last();
TableRow firstRow = theTable.Elements<TableRow>().First();
如何选择倒数第二行?
答案 0 :(得分:2)
试试这个:
TableRow firstRow = theTable.Elements<TableRow>().Reverse().Skip(1).First();
请注意,如果没有合适的行(Last
和First
),此表达式可能会抛出异常。
答案 1 :(得分:1)
如果您知道计数,您可以通过减法找到k
- 后面的元素,如下所示:
var k = 2; // Second element from the back
var total = theTable.Elements<TableRow>().Count();
if (total < k) throw ... // Not enough elements
var kThFromBack = theTable.Elements<TableRow>().Skip(total-k).First();
答案 2 :(得分:0)
做了一点扩展方法:
public static T NthLast<T>(this IEnumerable<T> source, int count)
{
if (count < 0)
throw new ArgumentException("count must be >= 0");
int i = 0;
var queue = new Queue<T>(count);
using (var e = source.GetEnumerator())
{
while (e.MoveNext())
{
queue.Enqueue(e.Current);
if (i++ > count)
queue.Dequeue();
}
if (count >= i)
throw new ArgumentException("count was greater than length");
}
return queue.Dequeue();
}
获得倒数第二个元素:
var secondLast = theTable.Elements<TableRow>().NthLast(1)
答案 3 :(得分:0)
简单的
TableRow lastButOneRow= theTable.Rows[theTable.Rows.Count-2]