我正在 C# OpenXML 库中打开和编辑 Word DOCX。
我有这个代码:
IEnumerable<Break> breaks = p.Descendants<Break>().Where(s => s != null && s.Type == BreakValues.Page);
int count = breaks.Count(); // THIS THROWS EXCEPTION!
例外是:
Error in implicit conversion. Cannot convert null object.
at DocumentFormat.OpenXml.EnumValue`1.op_Implicit(EnumValue`1 xmlAttribute)
at Reporting.Report.<generate>b__1(Break s)
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source)
at Reporting.Report.generate()
然而,这
Console.WriteLine("breaks == null? : " + (breaks == null));
返回假:
breaks == null? : False
这是库中的错误吗?
- - 编辑 - -
private int manualCount(IEnumerable<OpenXmlElement> col)
{
int count = 0;
if (col == null)
{
return count;
}
foreach (OpenXmlElement elem in col)
{
count++;
}
return count;
}
上面的循环(foreach)出现同样的问题。那么似乎是一个 OpenXML 错误?
--- 编辑解决方案 ---
首先检查 Type 不为空!
b.Type != null && b.Type == BreakValues.Page