2009-05-23 3 views
0
query = query.Where(q => q.Date.ToString().Contains(strDate)); 

Вышеуказанное заявление неверно.Как фильтровать запрос LINQ по дате?

Если я использую «==», то он будет соответствовать точной дате. Все в порядке. но могу ли я фильтровать, Как мы фильтруем строки?

ответ

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, я не думаю, что преобразование экземпляр 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().

Смежные вопросы