2014-06-13 3 views
1

내 데이터베이스에 issutime 테이블이 있고 그 형식은 다음과 같습니다 만 검색

enter image description here

내가 정확한 날짜와 시간이 나는 결과를 얻고으로 검색을 수행

. 하지만 내가 원하는 것은 날짜만으로 검색을 수행하는 것입니다. 예 : 2014-02-28은 해당 날짜의 모든 결과를 반환해야합니다.

var date = Convert.ToDateTime(search); 
return View(db.newsletter.Where(x => x.issuetime == date).ToList()); 

어떤 생각 :

이 내 코드?

답변

2

이것은 Kosar의 방법과 비슷하지만 더 간단합니다. 그것은 또한 하루 중 마지막 순간에 발생하는 이벤트를 올바르게 처리해야합니다.

var date = Convert.ToDateTime(search).Date; 
var nextDay = date.AddDays(1); 
return View(db.newsletter 
    .Where(x => x.issuetime >= date && x.issuetime < nextDay) 
    .ToList()); 

마이클 던랩의 접근 방식은 LINQ - 투 - SQL에서 작동,하지만 엔티티에 LINQ 그것을 처리 할 수없는 것 같다. Entity Framework에는 TruncateTime이 있지만 (참조 here) EntityFunctions는 더 이상 사용되지 않는 것으로 보입니다. 따라서 사용을 권유하지는 않습니다.

+0

굉장! 감사. – sensahin

1

DateTime 클래스의 Date 특성을 사용하십시오.

var date = Convert.ToDateTime(search); 
return View(db.newsletter.Where(x => x.issuetime.Date == date.Date).ToList()); 
+0

issutime 후에 .denate를 사용하지 마십시오. – sensahin

+1

@ ŞenolŞahin : LINQ to SQL에서 작동합니다. 아마도 원래 질문에 LINQ 공급자 (Entity Framework?)에 대한 정보를 포함시켜야합니다. – StriplingWarrior

1

날짜 만 검색하면 날짜의 시간 소인이 00 : 00 : 00 : 000으로 변경됩니다. 예를 들어 2014-02-28의 경우 2014-02-28 00 : 00 : 00 : 000을 찾습니다. 그러나 2014-02-28 00:00보다 큰 모든 issuetime 동등한 레코드가 필요합니다. 00 : 000, 2014-02-29 00 : 00 : 00 : 000 미만. 마이클 솔루션이 당신을 위해 작동하지 않는다면 이런 식으로 시도 할 수 있습니다.

var date1=DateTime.Parse(date + " " + "00:00:00 AM") 
var date2=DateTime.Parse(date + " " + "11:59:59 PM") 
return View(db.newsletter.Where(x => x.issuetime>= date1 && x.issuetime<= date2).ToList());