2016-04-23 22 views
5

Ho la seguente funzione:LINQ non funziona per le stringhe in Xamarin?

private static string SanitizeVersionStringFromUnit(string version) 
    { 
     var santizedString = new string(version.Where(char.IsLetterOrDigit).ToArray()); ; 
     return santizedString; 
    } 

Tuttavia, intellisense mi sta dicendo stringa non contiene una definizione per Dove e che nessun metodo di estensione può essere trovato. Ho dichiarato using System.Linq; nel file. In un progetto non Xamarin questo codice funziona bene.

Questo è un progetto PCL Xamarin.Forms nella comunità VS2015. Cosa dà?

risposta

10

Si riceve l'errore perché la versione PCL di string non implementa IEnumerable<char>. È possibile utilizzare Cast per rendere il codice di compilazione:

private static string SanitizeVersionStringFromUnit(string version) 
{ 
    var santizedString = new string(version.Cast<char>().Where(char.IsLetterOrDigit).ToArray()); 
    return santizedString; 
} 

Vedere questa domanda per maggiori dettagli: Why doesn't String class implement IEnumerable in portable library?