2015-05-19 14 views
6

Ho scritto un LINQ in C#Come convertire var a 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>(); 

Il problema sta arrivando alla fine linea, dove i seguenti errori sorgono:

  • System.Collections.Generic.IEnumerable<AnonymousType#1> fa non contiene una definizione per ToArray e il miglior metodo di estensione sovraccarico System.Linq.Enumerable.ToArray<TSource>(System.Collections.Generic.IEnumerable<TSource>) ha alcuni argomenti non validi

  • argomento
  • grado: non può convertire da System.Collections.Generic.IEnumerable<AnonymousType#1> a System.Collections.Generic.IEnumerable<string>

cosa è sbagliato e ciò che è il modo per convertire il mio var ad un string[]?

+2

Non si può "convertire da' var'", perché' var' non è un tipo. 'var' è una parola chiave che dice al compilatore di dedurre il tipo statico dall'espressione sul lato destro. (Probabilmente lo sapevi già, ma volevo sottolineare l'imprecisione nel modo in cui hai espresso la tua domanda.) – stakx

risposta

12

si sta creando un tipo anonimo qui:

new { Node = line.Trim() } 

che non è necessario, basta tornare

line.Trim() 

e hai un IEnumerable di string. Allora la vostra ToArray funzionerà:

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

string[] xmlLines = possibleElements.ToArray(); 

Un'altra opzione è:

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

@SimpleGuy Se vuoi capire veramente cosa LINQ fa sotto il cofano (e avere molto tempo ;-)) dai un'occhiata all'eccellente serie [Edulinq] di Jon Skeet (http://codeblog.jonskeet.uk/category/edulinq) –

+1

Ho quasi aggiunto un'altra risposta, ma poi ho visto la tua opzione usando 'Select', che è quello che stavo andando suggerire. – CoderDennis

+0

@sim bisogno di più aiuto? –

Problemi correlati