2013-07-01 93 views
0

我有一个LINQ查询VB.NET,我必须检查日期是否在时间范围之间---这里是扭曲有效日期是必需的,但结束日期可空LINQ VB.NET检查生效日期和结束日期之间的日期(结束日期可以为空)

我可以有相同的记录,但该日期不能重叠

.Where(Function(x) x.srvc_def_desc = txtSrvDefDesc.Text.Trim()) _ 
         .Where(Function(x) txtsrvEffDt.SelectedDate >= x.eff_dt And (txtsrvEffDt.SelectedDate <= x.end_dt)).Count() 

我遇到的问题是我如何检查可为空的日期作为计算生效日期和结束日期之间的日期没有过期?

+0

尝试类似---以下但不工作--- db.tbl_service_definitions _ .Where(Function(x)x.srvc_def_desc = txtSrvDefDesc.Text.Trim())_Where(x)txtsrvEffDt.SelectedDate> = x.eff_dt And(txtsrvEffDt.SelectedDate <= x.end_dt or x.end_dt = Nullable(of DateTime))。Count() – Moojjoo

回答

0
.Where(Function(x) _ 
     x.srvc_def_desc = txtSrvDefDesc.Text.Trim() _ 
     AndAlso txtsrvEffDt.SelectedDate >= x.eff_dt _ 
     AndAlso (Not txtSrvEffDt.HasValue() OrElse txtsrvEffDt.SelectedDate <= x.end_dt)).Count() 

这可以简化为(如果Count是所有你感兴趣的):

.Count(Function(x) _ 
     x.srvc_def_desc = txtSrvDefDesc.Text.Trim() _ 
     AndAlso txtSrvEffDt.SelectedDate >= x.eff_dt _ 
     AndAlso (Not txtSrvEffDt.HasValue() OrElse txtsrvEffDt.SelectedDate <= x.end_dt)) 
+0

看起来不错,但是得到“Leading”。或'!“只能出现在'With'语句中,我不是VB.NET大师,sup移植代码。 – Moojjoo

+0

对不起,C#语法潜入...纠正“!”到一个“不”... –

+0

测试.....谢谢...我从C#到VB.NET来回方式很多...再次感谢您的帮助。 – Moojjoo

相关问题