C# 获取表的最后一行
如果获取第一行/最后一行如下所示:C# 获取表的最后一行,c#,asp.net,openxml,C#,Asp.net,Openxml,如果获取第一行/最后一行如下所示: TableRow lastRow = theTable.Elements<TableRow>().Last(); TableRow firstRow = theTable.Elements<TableRow>().First(); TableRow lastRow=table.Elements().Last(); TableRow firstRow=table.Elements().First(); 如何选择最后一行?尝试以下操作
TableRow lastRow = theTable.Elements<TableRow>().Last();
TableRow firstRow = theTable.Elements<TableRow>().First();
TableRow lastRow=table.Elements().Last();
TableRow firstRow=table.Elements().First();
如何选择最后一行?尝试以下操作:
TableRow firstRow = theTable.Elements<TableRow>().Reverse().Skip(1).First();
TableRow firstRow=table.Elements().Reverse().Skip(1.First();
请注意,如果没有合适的行可用(也包括Last
和First
),此表达式可能引发异常。请尝试以下操作:
TableRow firstRow = theTable.Elements<TableRow>().Reverse().Skip(1).First();
TableRow firstRow=table.Elements().Reverse().Skip(1.First();
请注意,如果没有合适的行可用(也包括Last
和First
),此表达式可能引发异常。请尝试以下操作:
TableRow firstRow = theTable.Elements<TableRow>().Reverse().Skip(1).First();
TableRow firstRow=table.Elements().Reverse().Skip(1.First();
请注意,如果没有合适的行可用(也包括Last
和First
),此表达式可能引发异常。请尝试以下操作:
TableRow firstRow = theTable.Elements<TableRow>().Reverse().Skip(1).First();
TableRow firstRow=table.Elements().Reverse().Skip(1.First();
请注意,如果没有合适的行可用(也包括
Last
和First
),此表达式可能会引发异常。如果您知道计数,可以通过减法从后面找到k
-th元素,如下所示:
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();
var k=2;//后面的第二个元素
var total=theTable.Elements().Count();
如果(总数
如果您知道计数,您可以通过减法从后面找到第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();
var k=2;//后面的第二个元素
var total=theTable.Elements().Count();
如果(总数
如果您知道计数,您可以通过减法从后面找到第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();
var k=2;//后面的第二个元素
var total=theTable.Elements().Count();
如果(总数
如果您知道计数,您可以通过减法从后面找到第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();
var k=2;//后面的第二个元素
var total=theTable.Elements().Count();
如果(总数
做了一点扩展方法:
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();
}
publicstaticnthlast(此IEnumerable源代码,int计数)
{
如果(计数<0)
抛出新ArgumentException(“计数必须大于等于0”);
int i=0;
var queue=新队列(计数);
使用(var e=source.GetEnumerator())
{
while(如MoveNext())
{
排队。排队(如当前);
如果(i++>计数)
queue.Dequeue();
}
如果(计数>=i)
抛出新ArgumentException(“计数大于长度”);
}
return queue.Dequeue();
}
要获取最后一个元素,请执行以下操作:
var secondLast = theTable.Elements<TableRow>().NthLast(1)
var secondLast=theTable.Elements().NthLast(1)
做了一点扩展方法:
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();
}
publicstaticnthlast(此IEnumerable源代码,int计数)
{
如果(计数<0)
抛出新ArgumentException(“计数必须大于等于0”);
int i=0;
var queue=新队列(计数);
使用(var e=source.GetEnumerator())
{
while(如MoveNext())
{
排队。排队(如当前);
如果(i++>计数)
queue.Dequeue();
}
如果(计数>=i)
抛出新ArgumentException(“计数大于长度”);
}
return queue.Dequeue();
}
要获取最后一个元素,请执行以下操作:
var secondLast = theTable.Elements<TableRow>().NthLast(1)
var secondLast=theTable.Elements().NthLast(1)
做了一点扩展方法:
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();
}
publicstaticnthlast(此IEnumerable源代码,int计数)
{
如果(计数<0)
抛出新ArgumentException(“计数必须大于等于0”);
int i=0;
var queue=新队列(计数);
使用(var e=source.GetEnumerator())
{
while(如MoveNext())
{
排队。排队(如当前);
如果(i++>计数)
queue.Dequeue();
}
如果(计数>=i)
抛出新ArgumentException(“计数大于长度”);
}
return queue.Dequeue();
}
要获取最后一个元素,请执行以下操作:
var secondLast = theTable.Elements<TableRow>().NthLast(1)
var secondLast=theTable.Elements().NthLast(1)
做了一点扩展方法:
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();
}
publicstaticnthlast(此IEnumerable源代码,int计数)
{
如果(计数<0)
抛出新ArgumentException(“计数必须大于等于0”);
int i=0;
var queue=新队列(计数);
使用(var e=source.GetEnumerator())
{
while(如MoveNext())
{
排队。排队(如当前);
如果(i++>计数)
queue.Dequeue();
}
如果(计数>=i)
抛出新ArgumentException(“计数大于长度”);
}
return queue.Dequeue();
}
要获取最后一个元素,请执行以下操作:
var secondLast = theTable.Elements<TableRow>().NthLast(1)
var secondLast=theTable.Elements().NthLast(1)
简单的一个
TableRow lastButOneRow= theTable.Rows[theTable.Rows.Count-2]
简单的
TableRow lastButOneRow= theTable.Rows[theTable.Rows.Count-2]
简单的
TableRow lastButOneRow= theTable.Rows[theTable.Rows.Count-2]
简单的
TableRow lastButOneRow= theTable.Rows[theTable.Rows.Count-2]
最后一个是什么?你是说最后一排吗?@哈姆雷特是的,最后一排第二排是什么?你是说最后一排吗?@哈姆雷特是的,最后一排第二排是什么?你是说最后一排吗?@哈姆雷特是的,最后一排第二排是什么?您是指最后一行吗?@Hamlet是的,最后一行错误:无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“DocumentFormat.OpenXml.Wordprocessing.TableRow”。存在显式转换(您是否缺少转换?)谢谢,将您以前的答案与DasBinkenLights混合,得到了我想要的结果,看起来与您当前的版本完全相同:)错误:无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“DocumentFormat.OpenXml.Wordprocessing.TableRow”。解释