2015-05-19 12 views
6

Napisałem LINQ w C#Jak przekonwertować var ​​do string []

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

Problem nadchodzi w ostatnim wierszu, gdzie pojawiają się następujące błędy:

  • System.Collections.Generic.IEnumerable<AnonymousType#1> robi nie zawiera definicji dla ToArray i najlepszego sposobu rozszerzenia przeciążenie System.Linq.Enumerable.ToArray<TSource>(System.Collections.Generic.IEnumerable<TSource>) ma pewne nieprawidłowe argumenty

  • Instance argumentem: nie można przekonwertować z System.Collections.Generic.IEnumerable<AnonymousType#1> do System.Collections.Generic.IEnumerable<string>

co jest złe, a co jest sposobem konwersji moje var Do string[]?

+2

Nie można "przerobić od' var'", ponieważ' var' nie jest typem. 'var' to słowo kluczowe nakazujące kompilatorowi wywnioskowanie typu statycznego z wyrażenia po prawej stronie. (Prawdopodobnie już to wiedziałeś, ale chciałem zwrócić uwagę na niedokładności w sformułowaniu twojego pytania.) – stakx

Odpowiedz

12

Tworzycie typ anonimowy tutaj:

new { Node = line.Trim() } 

To nie jest konieczne, wystarczy powrócić

line.Trim() 

i masz IEnumerable z string. Wtedy twój ToArray zadziała:

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

string[] xmlLines = possibleElements.ToArray(); 

Inną opcją jest:

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

@SimpleGuy Jeśli chcesz naprawdę dogłębnie zrozumieć, co LINQ robi pod maską (i masz dużo czasu ;-)) możesz rzucić okiem na znakomitą serię Jona Skeeta [Edulinq series] (http://codeblog.jonskeet.uk/category/edulinq) –

+1

Prawie dodałem kolejną odpowiedź, ale zobaczyłem twoją opcję za pomocą 'Wybierz', o co chodziło sugerować. – CoderDennis

+0

@im potrzebujesz więcej pomocy? –

Powiązane problemy