这是我的全套数据,突出显示的行应该由我的查询返回,但不返回任何数据。
http://screencast.com/t/S0DgVgIuQS
而linq就像这样
if (filtro.Equals("Pendientes"))
{
var activididadesFiltradas = actividades
.Where(p => (Convert.ToDateTime(p.fechaVencimiento) >= DateTime.Today)
&& (Convert.ToDateTime(p.fechaVencimiento) <= DateTime.Today.AddDays(7))
&& (p.estado != "Documentada")).ToList();
return activididadesFiltradas;
}
基本上它应该返回fechavencimiento在今天和未来7天之间的数据,并且estado与Documentada不同,如果你看到屏幕截图,条件就满足了。
btw,数据集的日期是字符串,所以我必须在比较之前转换它们
Upodate1
我也试过这个但没有结果
var present = DateTime.Today;
var future = DateTime.Today.AddDays(7);
var validIDs = actividades
.Select(s => new
{
id = s.ID,
filter = s.fechaVencimiento,
date = Convert.ToDateTime(s.fechaVencimiento, CultureInfo.InvariantCulture ),
present = new DateTime(present.Year, present.Month, present.Day),
future = new DateTime(future.Year, future.Month, future.Day)
})
.Where(m => (m.date - m.present).TotalDays >= 0 && (m.future - m.date).TotalDays >= 0 && !m.filter.Equals("Documentada"))
.Select(s => s.id);
var activididadesFiltradas = actividades.Where(a => validIDs.Contains(a.ID)).ToList();
更新2
这是应该返回的记录:
答案 0 :(得分:2)
`"(Convert.ToDateTime(p.fechaVencimiento) >= DateTime.Today)"`
7/09/2015
今天肯定不是>=
(MM/dd/yyyy
)格式
答案 1 :(得分:1)
您的比较不会考虑时间成分。即使您的日期被正确解析,如果它在字符串表示中不包含时间元素,您最终可能会遇到日期为2015/01/01 00:00:00:000和&# 39;今天&#39;是2015/01/01 03:12:56:001看到您只对几天感兴趣,我建议您正常化&#39;首先是你的日期,然后根据结果过滤。
可能是这样的:
var format = "dd/MM/yyyy";
var present = DateTime.ParseExact (DateTime.Today.ToString(format, CultureInfo.InvariantCulture), format, CultureInfo.InvariantCulture);
var future = DateTime.ParseExact (DateTime.Today.AddDays (7).ToString(format, CultureInfo.InvariantCulture), format, CultureInfo.InvariantCulture);
var activididadesFiltradas = actividades
.Where(p => ((DateTime.ParseExact(p.fechaVencimiento, format, CultureInfo.InvariantCulture) - present).TotalDays >= 0)
&& (future - DateTime.ParseExact(p.fechaVencimiento, format, CultureInfo.InvariantCulture)).TotalDays >= 0
&& (p.estado != "Documentada")).ToList();
return activididadesFiltradas;