将bool值显示为是或否

时间:2013-02-12 10:42:55

标签: c# boolean oledbdatareader

我正在查询数据库并将值分配给我在报告中序列化并显示的对象。

事情是bool变量在报告中显示为true或false。如何将值显示为“是”或“否”。

这是我的班级

public class ProductReportView
{
    public int Count { get; set; }
    public string ProductCode { get; set; }
    public string ProductTitle { get; set; }
    public string Producer { get; set; }

    public bool VideoOnDemand { get; set; }
    public bool PreviewScreen { get; set; }
    public bool QualityCheck { get; set; }
    public bool Archive { get; set; }
}

这是我分配值的方式

OleDbDataReader dbreader = cmd.ExecuteReader();

while (dbreader.Read())
{
     Console.WriteLine("Record " + totalCount++);
     ProductReportView rep = new ProductReportView();
     rep.Count = ++totalCount;
     rep.ProductCode = (string)dbreader["CODE"];
     rep.ProductTitle = (string)dbreader["TITLE"];
     rep.Producer = (string)dbreader["PRODUCER"];
     rep.VideoOnDemand = (bool)dbreader["VideoOnDemand"];
     rep.PreviewScreen = (bool)dbreader["PreviewLibraryChecked"];
     rep.QualityCheck = (bool)dbreader["QualityCheck"];
     rep.Archive = (bool)dbreader["Archive"];
     lst.Add(rep);
}

这些值基于选中和取消选中的复选框(VideoOnDemand,PreviewScreen QualityCheck,Archive)

5 个答案:

答案 0 :(得分:4)

你没有说你是如何'报道'......

这有帮助吗?

   Control.Text = rep.VideoOnDemand ? "Yes" : "No";

答案 1 :(得分:2)

在将值存储在对象期间进行更改确实是一个坏主意。所以在网格中的C#级别进行

Control.Text = rep.VideoOnDemand ? "Yes" : "No";

答案 2 :(得分:1)

您也可以在Sql Query中执行此操作。

例如

选择

案例VideoOnDemand 当1然后'是' 别的'不' 结束为'VideoOnDemand'

来自tblxyz

答案 3 :(得分:0)

我的方法有4个简单的属性,可以重用和清理代码:

public class ProductReportView
{
    public int Count { get; set; }
    public string ProductCode { get; set; }
    public string ProductTitle { get; set; }
    public string Producer { get; set; }

    public bool VideoOnDemand { get; set; }
    public bool PreviewScreen { get; set; }
    public bool QualityCheck { get; set; }
    public bool Archive { get; set; }

    private string toYesNo(bool b)
    {
        return b ? "Yes" : "No";
    }

    public string VideoOnDemandString
    {
        get { return this.toYesNo(this.VideoOnDemand); }
    }

    public string PreviewScreenString
    {
        get { return this.toYesNo(this.PreviewScreen); }
    }

    public string QualityCheckString
    {
        get { return this.toYesNo(this.QualityCheck); }
    }

    public string ArchiveString
    {
        get { return this.toYesNo(this.Archive); }
    }
}

此代码可以在您的所有应用程序中重复使用,而不会重复“是”,“否”,“是”,“否”等。

最终建议:bool应存储在bool属性中,字符串应存储在字符串属性中。

不要将bool值保持转换为字符串:没有任何意义。

答案 4 :(得分:-1)

将值存储在对象中时使用三元运算符

rep.VideoOnDemand = (bool)dbreader["VideoOnDemand"] ? "Yes" : "No";  

VideoOnDemand设为string

public string VideoOnDemand { get; set; }

对其他需要YES / NO

的变量使用相同的方法