giovedì 29 gennaio 2015

LINQ to Entities does not recognize the method System.String PadRight(Int32, Char) and this method cannot be translated into a store expression LINQ to Entities non riconosce il metodo 'System.String PadRight(Int32, Char)', che pertanto non può essere convertito in un'espressione di archivio


Nel caso che si esegue un metodo, per esempio il metodo Padright di un oggetto di tipo string, durante l'esecuzione della query genera un errore come indicato dal titolo del post.
Qui di seguito la query che genera l'errore.


string spazio = "";
 var risultato = (from Dati in Oggetti()
                             where Dati.Campo == "1" 
                             select new
                             {

                                PrimoCampo= "1",
                                 SecondoCampo = (string.IsNullOrEmpty(Dati.CAmpoA) == true ? spazio .PadRight(10, ' ') : Dati.CAmpoA)
}

Per risolvere tale problema, dobbiamo utilizare la select nel methodo ToList utilizzato nell'espressione della query, che restituisca un insieme di tipo tolist.

Qui di seguito si riporta l'esempio di query Linq per risolvere tale errore.


string spazio = "";
Qui di seguito un esempio di codice
var risultato= (from Dati in Oggetti()
                        where Dati.Campo == "1" 
                        select Dati).ToList().Select(c => new  {
                            PrimoCampo= "1",
                            SecondoCampo = (string.IsNullOrEmpty(c.CAmpoA) == true ? spazio .PadRight(10, ' ').ToString() : c.CAmpoA)
                       
                        }).ToList();




Nessun commento: