我首先这样做是为了返回父节点下的一组特定节点,该节点的id等于1,这是非常有效的。
IEnumerable<XElement> world1 = LevelData.root.
Elements("world").
Where(element => (int?)element.Attribute("id") == 1);但是我需要多次这样做,并且每个实例都有自己的实例,所以我想把它们放到一个列表中,但是它甚至没有编译,告诉我错误CS0266:
无法隐式地将“System.Collections.Generic.IEnumerable”类型转换为“System.Collection s.Generic.List>”。存在显式转换(是否缺少强制转换?)
List<IEnumerable<XElement>>[] World = new List<IEnumerable<XElement>>[noofworlds];
foreach (List<IEnumerable<XElement>> wn in World)
{
Debug.WriteLine("World: "+w);
//this will make a list of all the nodes (elements) within the world specified by the id tag
World[w] = LevelData.Root.Elements("world").Where(element => (int?)element.Attribute("id") == 1);//with id == to i
w++;
}因此,我尝试在List<IEnumerable<XElement>>之前添加强制转换的LevelData.root.,但随后得到了一个无效的异常。我在一块砖墙上,想去哪里。有什么建议吗?
发布于 2013-02-11 21:55:39
您的问题有点混乱,您似乎有一个List<IEnumerable<XElement>>数组,并且您正在尝试为它分配一个IEnumerable<XElement>。
如果您只想要一个List of IEnumerable<XElement>,这应该可以工作。
List<IEnumerable<XElement>> World = new List<IEnumerable<XElement>>();
for (int i = 0; i < noofworlds; i++)
{
World.Add(LevelData.Root.Elements("world").Where(element => (int?)element.Attribute("id") == i));//with id == to i
}否则,tou将不得不创建一个新列表以添加到数组中,并将IEnumerable<XElement>添加到该列表中。
List<IEnumerable<XElement>>[] World = new List<IEnumerable<XElement>>[noofworlds];
for (int i = 0; i < noofworlds; i++)
{
World[i] = new List<IEnumerable<XElement>> { (LevelData.Root.Elements("world").Where(element => (int?)element.Attribute("id") == i)) };//with id == to i
}https://stackoverflow.com/questions/14821258
复制相似问题