我从一个包含名为“NewValue”的字段的数据库中选择了IQueryable。该字段将包含0,1或2.我想用一个基于其编号的字符串替换该值 即0 =“有效”。我知道IQueryables不是用来改变值,主要是为了查询,但我需要在下一行使用它来添加到ViewModel
var AssessmentList = assessment
.Select(p => new LogManagementViewModel
{
newValue = p.NewValue,
});
如何将assement.NewValue中的所有值更改为字符串?
答案 0 :(得分:2)
var dictionary = new Dictionary<int, string>
{
{ 0, "Active" },
{ 1, "Inactive" },
// etc
};
var AssessmentList = assessment
.Select(p => new LogManagementViewModel
{
newValue = dictionary[p.NewValue],
});
这也适用于其他类型之间的映射。
答案 1 :(得分:1)
var values = new [] {"StrValue1", "StrValue2", "StrValue"};
var AssessmentList = assessment
.AsEnumerable()
.Select(p => new LogManagementViewModel
{
newValue = values[p.NewValue],
});
答案 2 :(得分:1)
最简单,最干净的是映射方法:
string MapToString(int value)
{
//..
}
var AssessmentList = assessment
.Select(p => new LogManagementViewModel
{
NewValue = MapToString(p.NewValue),
});
答案 3 :(得分:0)
一种方式:
在您的类中添加一个新的计算属性(假设您在任何生成的代码之外都有一个部分类)。然后,该计算类可以进行翻译,但需要。您的视图模型可以引用此计算值。
答案 4 :(得分:0)
我会在你的LogManagementViewModel中做一个构造函数重载,它可以为你工作,如下所示:
public LogManagementViewModel(int NewValue)
{
switch(NewValue)
{
case 0:
this.NewValue = "Active";
break;
// etc...
}
}
IMO,这将逻辑置于适当的位置,让您的视图模型按原样进行翻译,这不是您的LINQ /数据库查询的责任。