如何在LINQ查询中添加静态

时间:2012-08-08 10:15:21

标签: c# asp.net linq

我遇到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”

我怎么能这样做?

3 个答案:

答案 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属性。