如何将var转换为string []

时间:2015-05-19 08:33:19

标签: c# .net linq generics

我在C#中写了一个LINQ

string etXML = File.ReadAllText("ET_Volume.xml");
string[] allLinesInAFile = etXML.Split('\n');

var possibleElements = from line in allLinesInAFile
                       where !this.IsNode(line)
                       select new { Node = line.Trim() };  

string[] xmlLines = possibleElements.ToArray<string>();

问题出现在最后一行,出现以下错误:

  
      
  • System.Collections.Generic.IEnumerable<AnonymousType#1>   不包含ToArray的定义和最佳扩展方法   超载   System.Linq.Enumerable.ToArray<TSource>(System.Collections.Generic.IEnumerable<TSource>)   有一些无效的论点

  •   
  • 实例参数:无法转换   从System.Collections.Generic.IEnumerable<AnonymousType#1>到。{   System.Collections.Generic.IEnumerable<string>

  •   

有什么问题?将var转换为string[]的方式是什么?

1 个答案:

答案 0 :(得分:12)

您在此处创建匿名类型:

new { Node = line.Trim() }

这不是必要的,只需返回

line.Trim()

您的IEnumerable string。然后,您的ToArray将有效:

var possibleElements = from line in allLinesInAFile
                       where !this.IsNode(line)
                       select line.Trim();  

string[] xmlLines = possibleElements.ToArray();

另一种选择是:

possibleElements.Select(x => x.Node).ToArray();