2013-07-25 2 views
1
DateTime start = d.Key; // say 2013-06-01 
DateTime end = d.Key.AddDays(d.Value); // say end=2013-06-07 

var filteredRecords = from n in dt.AsEnumerable() 
         orderby n["Date"] ascending 
         where (DateTime)n["Date"] >= start && (DateTime)n["Date"] <= end 
         select n; 

쿼리는 제대로 작동하지만 항상 첫 번째 레코드 인 첫 번째 데이터 (2013-06-01)가 누락되었습니다. 나는 그것을 데이터베이스와 점검했고, 거기에 누락 된 날짜에 대한 데이터를 얻었습니다. 내가 뭘 잘못하고 있는지 모르겠다. 도와주세요. 사전에Linq to DataTable 쿼리에서 결과 집합의 첫 번째 레코드가 누락되었습니다.

감사합니다!

+0

'무엇을 d'입니까? 'd.Key'의 값이 정확히'2013-06-01'입니까? 분과 초의 부분이있을 수 있다는 것을 의미합니까? 'n [ "Date"]'... –

+0

d에 적용된 동일한 논리는 Dictionary 객체입니다. 예, 2013-06-01입니다. 중단 점을 사용하여 시각적 스튜디오를 점검했습니다. –

+0

첫 번째 레코드에서 값을 추출하고'd.Key '와 비교하여 서로 일치하는지 확인해야합니다. 그렇지 않은 경우 문제가됩니다. –

답변

2

시도는 비교 기간의 Date 부분을 사용합니다 :

from r in dt.AsEnumerable() 
let date = r.Field<DateTime>("Date") 
where date.Date >= start.Date && date.Date <= end.Date 
orderby date ascending 
select r; 
+1

** 멋지다, 그 작품 perfecct lazyberezovsky 선생님 ** 고마워 톤, 내 하루 저장 : –

+1

+1 '에 대한 날짜 = ...'. 쿼리 구문의 큰 이점 중 하나입니다. –

2
var recs = dt.AsEnumerable().Where(x=>x.Field<DateTime>("Date") >= start && x.Field<DateTime>("Date") <= end) 
         .OrderBy(x => x.Field<DateTime>("Date")); 
관련 문제