从元组列表中选择item1,其中指定了item2

时间:2018-03-30 11:29:39

标签: c# linq

我有一个像元组列表:

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;

1 个答案:

答案 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();

如果有多个元素满足所提供的谓词,那么这样做会带来好处,那么你会得到一个异常来表明出现了错误。

虽然第一种方法是隐藏错误,但明智地决定采用哪种方法。