c# - Linq select returning string instead of object -


i have following code:

var languages = _languageservice             .getall()             .select(x => (((languageviewmodel) new languageviewmodel().injectfrom(x))))             .tolist(); 

when executing this, languages becomes, expected, collection of languageviewmodel objects:

working

what trying is, when selecting, convert object's code property uppercase, so:

var languages = _languageservice             .getall()             .select(x => (((languageviewmodel) new languageviewmodel().injectfrom(x)).code = x.code.toupper()))             .tolist(); 

i'm expecting languages object have multiple languageviewmodels in looks this:

enter image description here

my guess fact i'm using statement select(x => (new object().property = value)) selects property. then, how can return object 1 of properties changed? using object initializer before inject not option gets overriden, using after inject not possible, not casted yet, got solution here not seem work. advice appreciated.

you correctly guessed what's wrong: changed lambda body expression returns string.

you can't write lambda body single expression want, don't need to. can put multiple statements in lambda:

var languages = _languageservice     .getall()     .select(x => {         var lvm = (languageviewmodel)new languageviewmodel().injectfrom(x);         lvm.code = x.code.toupper();         return lvm;     })     .tolist(); 

i'd love way less typing. it'd pretty cool if property-setting notation constructors generalized "set properties on return value":

var foo = new bar() { armpit = new flapdoodle() { limpet = 2 } }; var baz = foo.armpit { limpet = 4 }; 

yeah, bet c# team'll drop , right on it...

i don't know if explicit languageviewmodel cast necessary or not, had left in.


Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -