У меня есть внешняя библиотека, которая требует "XmlNode []" вместо XmlNodeList. Существует ли прямой способ сделать это, не выполняя итерации и передавая каждый узел?
Я не хочу делать это:
XmlNode[] exportNodes = XmlNode[myNodeList.Count];
int i = 0;
foreach(XmlNode someNode in myNodeList) { exportNodes[i++] = someNode; }
Я делаю это в.NET 2.0, таким образом, мне нужно решение без linq.
Попробуйте это (VS2008 и целевая платформа == 2.0):
static void Main(string[] args)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml("<a><b /><b /><b /></a>");
XmlNodeList xmlNodeList = xmldoc.SelectNodes("//b");
XmlNode[] array = (
new System.Collections.Generic.List<XmlNode>(
Shim<XmlNode>(xmlNodeList))).ToArray();
}
public static IEnumerable<T> Shim<T>(System.Collections.IEnumerable enumerable)
{
foreach (object current in enumerable)
{
yield return (T)current;
}
}
Подсказки отсюда: IEnumerable и IEnumerable (Of T) 2