I have the following code:
var languages = _languageService
.GetAll()
.Select(x => (((LanguageViewModel) new LanguageViewModel().InjectFrom(x))))
.ToList();
执行此操作后,
languages
将变成预期的LanguageViewModel
对象集合:
![Working](https://istack.dev59.com/ZoprT.webp)
Code
属性也转换为大写,如下所示:var languages = _languageService
.GetAll()
.Select(x => (((LanguageViewModel) new LanguageViewModel().InjectFrom(x)).Code = x.Code.ToUpper()))
.ToList();
我希望
languages
对象中有多个 LanguageViewModel
,但实际上它看起来像这样:
我猜测是因为我使用了类似于 Select(x => (new Object().Property = Value))
的语句,它选择了 Property
。但是,如何返回一个其中一个属性已更改的对象呢?在注入之前使用对象初始化程序不是选项,因为它将被覆盖,在注入之后使用它也不可能,因为它还没有被转换,所以我找到了这里的解决方案,但似乎不起作用。非常感谢任何建议。
InjectFrom()
方法从Language
实体映射到LanguageViewModel
。为什么不在映射方法中使用this.Code = languge.Code.ToUpper()
呢?这正是视图模型的全部意义 - 它能够自适应视图的特定需求... - haim770