2009-05-23 5 views

Antwort

3

Ich verstehe nicht wirklich, was Sie mit "Filter" meinen.

können Sie tun Sachen wie:

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

oder

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

wenn das, was Sie nach.

Natürlich müssen Sie strDate auf eine DateTime umwandeln. Wenn Sie wirklich nicht wollen, das zu tun, können Sie werfen auch das DB-Datum in einen String im gleichen Format:

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

Unter der Annahme, dass q.Date eine Instanz von Datetime ist, glaube ich nicht, Umwandlung Eine DateTime-Instanz in einem String ist der beste Weg, um Datumsangaben zu vergleichen. Es wäre viel zuverlässiger, DateTime basierend auf Eigenschaften des Objekts zu filtern. Zum Beispiel Jahr, Monat, etc ...

Zum Beispiel, wenn Sie nach dem Jahr in strDate filtern möchten, könnten Sie Folgendes tun.

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

Können Sie uns mehr Kontext durch Detaillierung, welche Art von Werten strDate auf diese Weise enthalten würden wir wissen können, was Sie gegen filtern möchten.

0

Wenn Sie sich über die Zeichenfolge, die Sie in Ihrer Suche erhalten, sicher sind, können Sie immer einen für Ihre Region spezifischen Inhalt erstellen.

(((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)) 

, dass eine Übereinstimmung für d/m/yyyy Zeichenfolge gesucht, auf das Datum zum Beispiel erzeugen würde. Dies ist nicht ideal für die öffentliche Suche, aber es ist besser als eine einfache .ToString().Contains().

Verwandte Themen