我在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>
does
not contain a definition forToArray
and the best extension method
overload
System.Linq.Enumerable.ToArray<TSource>(System.Collections.Generic.IEnumerable<TSource>)
has some invalid argumentsInstance argument: cannot convert
fromSystem.Collections.Generic.IEnumerable<AnonymousType#1>
to
System.Collections.Generic.IEnumerable<string>
有什么问题以及将我的var转换为字符串[]的方法是什么?
解决方法
您在此处创建匿名类型:
new { Node = line.Trim() }
这不是必要的,只需返回
line.Trim()
你有一个IEnumerable字符串.然后你的ToArray将工作:
var possibleElements = from line in allLinesInAFile where !this.IsNode(line) select line.Trim(); string[] xmlLines = possibleElements.ToArray();
另一种选择是:
possibleElements.Select(x => x.Node).ToArray();