在LinqToXml </int []>中返回int []而不是IEnumerable <int []>

时间:2012-03-20 11:52:10

标签: c# linq

我有一个方法:

 private int[] ParseBusyPlace(string xml)
       {
           var busyPlaces = from element in XDocument.Parse(xml).Descendants("Place")
                            select new []
                                       {
                                            (int) element.Attribute("ID")
                                       };

           return busyPlaces; // error

       }

此查询返回IEnumerable<int[]>。如何返回int的数组?

2 个答案:

答案 0 :(得分:10)

使用

private int[] ParseBusyPlace(string xml)
       {
           var busyPlaces = from element in XDocument.Parse(xml).Descendants("Place")
                            select (int) element.Attribute("ID");

           return busyPlaces.ToArray(); 

       }

答案 1 :(得分:8)

ÖzgürKara的答案绝对正确,但我会将其重写为 not 使用查询表达式,因为它只是来自/ select:

private int[] ParseBusyPlace(string xml)
{
    return XDocument.Parse(xml)
                    .Descendants("Place")
                    .Select(element => (int) element.Attribute("ID"))
                    .ToArray();
}

我还考虑返回List<int>而不是数组,因为它们通常更令人愉快,但这是另一回事。