如何将 XmlNodeList 拆分为两个较小的 XmlNodeList,其中一个的大小为 N,另一个的总大小为 N?
请参阅下面的示例以及我尝试使用的地方:
public static void Main(string[] args)
{
XmlDocument someDoc = new XmlDocument();
someDoc.LoadXml(@"<bananas>
<banana tasty='yes'></banana>
<banana tasty='very'></banana>
<banana tasty='amazing'></banana>
<banana tasty='mind-blowing'></banana>
<banana tasty='disgusting'></banana>
</bananas>");
XmlNodeList bananaNodeList = someDoc.SelectNodes("//banana");
eatSomeBananas(bananaNodeList, 2);
}
/** Splits a XmlNodeList into two XmlNodeList, first one is a slice from 0 to numberOfBananas-1, and the other slice is from numberOfBananas and onwards
*/
public static void eatSomeBananas(XmlNodeList subBananaNodeList, int numberOfBananas)
{
XmlNodeList bananasToEat = subBananaNodeList.Cast<XmlNode>().Take(numberOfBananas) as XmlNodeList; //Error down-casting - null!
if (bananasToEat == null)
Console.WriteLine("Error! Did not work");
/*else
doSomethingHere(bananasToEat); */
XmlNodeList remainingBananas = subBananaNodeList.Cast<XmlNode>().Skip(numberOfBananas) as XmlNodeList; //Error down-casting - null!
eatSomeBananas(remainingBananas, numberOfBananas);
}
我试图将 aXmlNodeList
转换为 a IEnumerable<XmlNode>
(因为前者继承自后者) - 我相信这应该是一个向上转换。我不应该可以将其重新转换为XmlNodeList
之后吗?但如果不是,为什么不呢?