我遇到LINQ查询问题......
我正在检索列表中的数据
public List<Station_Master> GetAllStations()
{
var stationlist = from s in dc.Station_Masters
select s;
return stationlist.ToList();
}
但是这里我的表Station_Masters包含一个状态字段作为数据类型int ..
列表将从表中提供所有记录,包括状态...
但我需要将状态显示为字符串...
我的意思是如果Status为0则会返回“active”,如果为1则会返回“Inactive”
我怎么能这样做?
答案 0 :(得分:7)
有很多方法可以做到这一点,一个例子可能是扩展Station_Master
类以公开一个属性,该属性将返回状态的字符串表示形式:
public partial class Station_Master
{
public string StatusText
{
get
{
switch (Status)
{
case 0:
return "Active";
case 1:
return "Inactive";
default:
return "Unknown";
}
}
}
}
答案 1 :(得分:0)
您需要创建一个DTO,其中Status是一个字符串而不是一个整数,并将所有其他属性保留为原始对象。
然后您的方法可以简单地说:
return dc.Station_Masters
.Select(c => new CustomObject
{
//Map all other fields and then remap the status
Status = c.Status == 0 ? "Active" : "Inactive"
});
然而,这是低效的,就好像从表中提取所有行以重新映射它们一样。只有在过滤后才能应用Select
转换。
答案 2 :(得分:0)
我认为最好将“主动/非主动”描述远离数据检索逻辑。 正如@James建议的那样 - 只需扩展你的类并显式编译description属性。