2009-05-23 4 views

답변

3

나는 "필터"가 의미하는 바를 실제로 얻지 못합니다.

당신이 할 수있는 것들과 같은 :

query = query.Where(q => q.Date.Year.Equals(myDate.Year)); 

또는

query = query.Where(q => q.Date.Day.Equals(myDate.Day)); 

그건 당신이 계신 있다면

.

물론 당신은 strDate를 DateTime에 캐스트해야합니다. 당신이 정말로 그렇게하지 않으려면, 당신은 또한 같은 형식의 문자열로 DB 날짜를 캐스팅 할 수 있습니다

query = query.Where(q => q.Date.ToString("dd-MM-yyyy").Contains(strDate)); 
0

q.Date은 날짜 시간의 인스턴스라고 가정 할 때, 나는 변환 생각하지 않는다 DateTime 인스턴스를 String으로 비교하는 것이 날짜를 비교하는 가장 좋은 방법입니다. 개체의 속성을 기반으로 DateTime을 필터링하는 것이 훨씬 더 안정적입니다. 예를 들어 연도, 월 등 ...

예를 들어 strDate에서 연도를 필터링하려면 다음을 수행 할 수 있습니다.

var d = DateTime.Parse(strDate); 
query = query.Where(q => q.Date.Year == d.Year); 

필터링 할 내용을 strDate에 포함시킬 수있는 값의 유형을 자세히 설명하면 더 많은 정보를 얻을 수 있습니까?

0

검색에 사용할 문자열에 대해 확실하면 언제든지 해당 지역에만 해당하는 내용물을 처리 할 수 ​​있습니다.

(((q.Date == null ? DateTime.Parse("01/01/1900") : q.Date).Value.Day.ToString()) + "/" + ((q.Date == null ? DateTime.Parse("01/01/1900") : q.Date).Value.Month.ToString()) + "/" + ((q.Date == null ? DateTime.Parse("01/01/1900") : q.Date).Value.Year.ToString())).ToString().Contains(strDate) || (q.Date == null ? DateTime.Parse("01/01/1900") : q.Date).ToString().Contains(strDate)) 

예를 들어 날짜를 검색 할 때 d/m/yyyy 문자열과 일치하는 것이 생성됩니다. 이것은 공개 검색에 적합하지 않지만 단순한 .ToString().Contains()보다 낫습니다.

관련 문제