ho il seguente codice:Linq selezionare tornare stringa invece dell'oggetto
var languages = _languageService
.GetAll()
.Select(x => (((LanguageViewModel) new LanguageViewModel().InjectFrom(x))))
.ToList();
Durante l'esecuzione di questo, languages
diventa, come previsto, una raccolta di LanguageViewModel
oggetti:
Quello che ho Sto cercando di fare è, quando si seleziona, anche convertire la proprietà Code
dell'oggetto in maiuscolo, in questo modo:
var languages = _languageService
.GetAll()
.Select(x => (((LanguageViewModel) new LanguageViewModel().InjectFrom(x)).Code = x.Code.ToUpper()))
.ToList();
Mi aspetto l'oggetto languages
di avere più LanguageViewModel
s in essa, ma sembra che questo:
La mia ipotesi è il fatto che sto usando una dichiarazione come Select(x => (new Object().Property = Value))
seleziona il Property
. Ma poi, come posso restituire un oggetto con una delle sue proprietà modificate? L'uso dell'inizializzatore di oggetti prima dell'iniezione non è un'opzione in quanto viene sovrascritto, usandolo dopo l'Inject non è possibile, in quanto non è ancora stato lanciato, così ho ottenuto qui la soluzione che non sembra funzionare. Qualche consiglio molto apprezzato.
Stai selezionando solo il codice. Prendi in considerazione l'utilizzo di un metodo di supporto per mappare/formattare il tuo oggetto. – ryanyuyu
Stai già mappando 'LanguageViewModel' dall'entità' Language' usando il metodo 'InjectFrom()'. Perché non 'this.Code = languge.Code.ToUpper()' invece nel metodo di mappatura? Questo è il punto centrale di un modello di visualizzazione - che si adatta alle esigenze specifiche della vista ... – haim770
InjectFrom() è una funzione di Omu.ValueInjecter, un pacchetto NuGet specializzato in injecting di valore. Sarebbe una buona idea cambiarlo? Ne dubito .. –