我对 .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/