這是我的全套數據,突出顯示的行應該由我的查詢返回,但它不返回任何數據。LINQ不返回正確的數據行
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天在未來的數據,以及國家體制不同,以Documentada,如果你看到的截圖,條件得到滿足。
順便說一句,該數據集在字符串中的日期,所以我比較
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
這是應該退回的記錄:
http://screencast.com/t/1SUjRV2rVGa
你檢查你的日期正確解析?文化等? – Sign
在沒有指定文化的情況下依賴Convert.ToDateTime是很危險的。 – varocarbas
我會說同樣的事情,標誌說,問題可能是轉換,而不是查詢。 –