Как я могу разделить 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);
}
Я попытался преобразовать XmlNodeList
в IEnumerable<XmlNode>
(поскольку первое наследуется от второго) - я считаю, что это должно быть повышение. Разве я не смогу впоследствии преобразовать это обратно в XmlNodeList
? Но если нет, то почему?