【发布时间】:2011-04-20 23:37:48
【问题描述】:
我有以下查询,有时ExpirationDate 为空,这会破坏查询并且应用程序崩溃。如果ExpirationDate 为空,我想为ExpirationDate 返回""。如何将这个 if 条件放入 LINQ?
List<PData> pressData =
(from press in dataContext.CPress
where press.ID.ToString() == this.PressID
select new PData
{
Heading = press.Heading,
Description = press.MetaDescription,
DatePublished = press.PublishDate.ToShortDateString(),
ExpirationDate = press.ExpirationDate.Value.ToShortDateString(),
Body = press.BodyContent,
CreatedBy=press.CreatedBy
}).ToList();
更新:
添加 Jon 建议的代码我得到以下异常
Could not translate expression 'Table(CPress).Where(press =>(press.PressID.ToString() = Invoke(value(System.Func`1[System.String])))).Select(按下 => 新 PData() {标题 = press.Heading,描述 = press.MetaDescription, DatePublished = press.PublishDate.ToShortDateString(), 到期日 = IIF((press.ExpirationDate = null), "", press.ExpirationDate.Value.ToShortDateString()), Body = press.BodyContent, ID = press.PressID, CreatedBy = press.CreatedBy})' 进入 SQL 并可以 不要将其视为本地表达式。
完全去掉 ExpirationDate 异常就消失了
【问题讨论】: