query = query.Where(q => q.Date.ToString().Contains(strDate));
위의 진술은 정확하지 않습니다.날짜별로 LINQ 쿼리를 필터링하려면 어떻게합니까?
"=="을 사용하면 정확한 날짜와 일치합니다. O.K입니다. 하지만 필자는 필터링 할 수 있습니다.
query = query.Where(q => q.Date.ToString().Contains(strDate));
위의 진술은 정확하지 않습니다.날짜별로 LINQ 쿼리를 필터링하려면 어떻게합니까?
"=="을 사용하면 정확한 날짜와 일치합니다. O.K입니다. 하지만 필자는 필터링 할 수 있습니다.
나는 "필터"가 의미하는 바를 실제로 얻지 못합니다.
당신이 할 수있는 것들과 같은 :
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));
q.Date은 날짜 시간의 인스턴스라고 가정 할 때, 나는 변환 생각하지 않는다 DateTime 인스턴스를 String으로 비교하는 것이 날짜를 비교하는 가장 좋은 방법입니다. 개체의 속성을 기반으로 DateTime을 필터링하는 것이 훨씬 더 안정적입니다. 예를 들어 연도, 월 등 ...
예를 들어 strDate에서 연도를 필터링하려면 다음을 수행 할 수 있습니다.
var d = DateTime.Parse(strDate);
query = query.Where(q => q.Date.Year == d.Year);
필터링 할 내용을 strDate에 포함시킬 수있는 값의 유형을 자세히 설명하면 더 많은 정보를 얻을 수 있습니까?
검색에 사용할 문자열에 대해 확실하면 언제든지 해당 지역에만 해당하는 내용물을 처리 할 수 있습니다.
(((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()
보다 낫습니다.