获取表的第二行

时间:2014-05-10 10:11:30

标签: c# asp.net openxml

如果获得第一行/最后一行如下:

TableRow lastRow = theTable.Elements<TableRow>().Last();

TableRow firstRow = theTable.Elements<TableRow>().First();

如何选择倒数第二行?

4 个答案:

答案 0 :(得分:2)

试试这个:

TableRow firstRow = theTable.Elements<TableRow>().Reverse().Skip(1).First();

请注意,如果没有合适的行(LastFirst),此表达式可能会抛出异常。

答案 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]