我有一个像元组列表:
List<Tuple<XElement, int>> allNodes = new List<Tuple<XElement, int>>();
我需要获取特定的XElement,其中item2(index)是特定的。 试过这样的事情,但得到了一个错误:
XElement parent = allNodes.Where(x => x.Item2 == 5).Select(x => x.Item1);
无法隐式转换类型System.Collections.Generic.IEnumerable System.Xml.Linq.XElement&gt;&#39;到&#39; System.Xml.Linq.XElement&#39;
答案 0 :(得分:2)
目前,您的代码返回的IEnumerable<XElement>
不是您想要的结果,而是您可以利用FirstOrDefault
急切操作来仅检索单个对象:
XElement parent = allNodes.Where(x => x.Item2 == 5)
.Select(x => x.Item1)
.FirstOrDefault();
或者如果每个元组索引都应该是唯一的,那么使用SingleOrDefault()
可能更好。
XElement parent = allNodes.Where(x => x.Item2 == 5)
.Select(x => x.Item1)
.SingleOrDefault();
如果有多个元素满足所提供的谓词,那么这样做会带来好处,那么你会得到一个异常来表明出现了错误。
虽然第一种方法是隐藏错误,但明智地决定采用哪种方法。