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:
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 languageviewmodel
s in looks this:
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
Post a Comment