c# - 如果 DateTime 为 null,我可以将 DateTime 转换为 Bit 以进行 bool 值评估吗?

标签 c# asp.net sql datetime casting

我对 .Net 和 SQL Server 比较陌生,我需要能够对 DateTime 数据类型进行 bool 值检查以查找空值。

我正在使用以下语句,这显然是错误的,因为它在调试时在我的 Visual Studio 即时窗口中返回 Int32。我正在使用 linq 调用查询一堆表的存储过程。

某些结果集合将被绑定(bind)的标记如下所示;

<asp:Image  ID="imgAuthorised" ImageUrl='<%# (bool)DataBinder.Eval(Container.DataItem, "AuthorisedDate")?"/Horizon/Images/save16x16.png":"/Horizon/Images/delete16x16.png" %>' runat="server" ToolTip='<%# (bool)DataBinder.Eval(Container.DataItem, "AuthorisedDate")?"Authorised":"Not Authorised" %>' />

根据返回的集合的 bool 值,我想显示一个合适的图像。这是我尝试(咳咳)在存储过程中进行评估'

CASE WHEN dbo.Expense.AuthorisedDate is null THEN 0 ELSE 1 END as AuthorisedDate

我试过像这样转换这个语句;

CAST(CASE WHEN dbo.Expense.AuthorisedDate is null THEN 0 ELSE 1 END as bit) as AuthorisedDate

如果我是一个 .net 新手(因此得名 :P),请随意对任何学生错误或理解不佳的问题咯咯笑!

如果有人能帮助我理解我做错了什么以及将来在尝试做这样的事情时应该做什么/避免什么,我将不胜感激。

TIA

网络新人

最佳答案

如何扩展您的模型?您的存储过程(假设它称为 GetMyData)可能会返回一个 ISingleResult。

如果是这样,转到您的 DBML,查看代码(假设这是一个 Web 应用程序)并创建一个新的分部类:

public partial class GetMyDataResults
{
    public bool IsAuthorised
    {
        get { return DateAuthorised.HasValue; }
    }
}

然后你应该能够:

<asp:Image ID="imgAuthorised" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "IsAuthorised")?"/Horizon/Images/save16x16.png":"/Horizon/Images/delete16x16.png" %>' runat="server" ToolTip='<%# DataBinder.Eval(Container.DataItem, "IsAuthorised")?"Authorised":"Not Authorised" %>' />

或者,您可以借助 OnItemDataBinding 事件并在其中完成工作,尽管我认为以上方法更简单。

干杯, 特里

关于c# - 如果 DateTime 为 null,我可以将 DateTime 转换为 Bit 以进行 bool 值评估吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531434/

相关文章:

C# 基于文本的游戏读取时没有错误,但在第一次选择后关闭

c# - 如何从数据表中删除所有行

asp.net - 防止数字以指数表示法显示的更简单方法

c# - 打包/发布任务 Microsoft.Web.Publishing.Tasks.CreateProviderList 无法加载 Web 部署程序集

asp.net - 集成 Windows 身份验证

c# - 委托(delegate)和事件之间有什么区别?

c# - 根据特定条件在列表末尾移动列表项的有效方法

php - MySQL 使用通配符选择结果不工作

mysql - 在vb.net中同步两个mysql数据库

sql - SQL Management Studio 中用于筛选的键盘方法是什么?