asp.net/C#︰ 如果为 null,使用 LINQ 处理日期时间

标签: Asp.net Linq C#
发布时间: 2017/2/25 3:50:39
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我专门为好的届满日期,数据库中有 null 值的领域是︰ good_expiryDate

想要的什么是以这种方式来处理︰ 如果 good_expiryDate 是我想要把它作为 null""或"-",如果它有价值,它将显示从数据库中检索的值?

我写的 LINQ 查询是这样,但它返回 MinValue 如果 good_expiryDatenull (这是我努力去做)。

var query = (from cd in db.CDIndexes
             join gds in db.Goods on cd.cdin_CDIndexID equals gds.good_CDIndexId 
             join itms in db.Items on gds.good_ItemsID equals itms.item_ItemsID

            where
            cd.cdin_CompanyId==c.Comp_CompanyId&&
            (
                gds.good_RemainCBM > 0 ||
                gds.good_RemainWT > 0 ||
                gds.good_RemainPackages > 0 ||
                gds.good_RemainVolumeWT > 0
            )
            &&
            itms.item_ItemsID==customerId

            select new DataItem
            {
                 depNumber=(int)cd.cdin_Serial,
                 ItemDesc=gds.good_Name,
                 gdExpiryDate =(DateTime) gds.good_expiryDate==null?DateTime.MinValue: (DateTime)gds.good_expiryDate,
                 InvoicBalanceUnits = (decimal) gds.good_RemainPackages,
                 WTBal=(decimal)gds.good_RemainWT,
                 VolWT=(decimal)gds.good_RemainVolumeWT
            }
       );
return query.ToList();

更新︰ good_expiryDate 是为 Datetime,在数据库中可以为 null 的类型

解决方法 1:

确保 gdExpiryDate 的类型是 string

然后改变这条线

gdExpiryDate =(DateTime) gds.good_expiryDate==null?DateTime.MinValue: (DateTime)gds.good_expiryDate,

gdExpiryDate = gds.good_expiryDate==null? "-" : ((DateTime)gds.good_expiryDate).ToString(),
官方微信
官方QQ群
31647020