J'ai le problème suivant: dans une table de base de données, les ventes sont enregistrées. L'un des champs est le SaleDate qui est un type SQL Server Date. Le site Web permet maintenant de rechercher dans ce champ. Et cela permet de rechercher uniquement l'année.Vérifiez la date avec Linq-to-SQL
Supposons qu'il existe un enregistrement avec la date 2008/11/01. Si je recherche "2008" l'entrée est retournée, ce qui est bien sûr correct. Mais la recherche de "2008/11/01" ne retournera pas l'entrée.
Alors, voici mon code:
filteredSales = filteredSales.Where(s => s.SaleDate.ToString().Contains(searchterm));
I have also tried this ones:
filteredSales = filteredSales.Where(s => s.SaleDate.Value.ToString().Contains(searchterm));
filteredSales = filteredSales.Where(s => s.SaleDate.Value.ToShortDateString().Contains(searchterm));
Ils ne fonctionnent pas.
Peut-être que ce n'est pas un problème LinQ du tout mais plus de la culture puisque c'est une application allemande et le terme de recherche est vraiment "01.11.2008". Mais quand je publie la valeur de la base de données ou même regarde directement la base de données, elle est affichée à "01.11.2008".
Merci pour votre aide.
Michael
Voici la solution complète basée sur la réponse choisie ci-dessous:
try
{
DateTime sdt = DateTime.Parse(suchbegriff, new System.Globalization.CultureInfo("de-DE"));
filteredSales = filteredSales.Where(s => s.SaleDate.Value == sdt);
}
catch (FormatException e)
{
// in case we have only the year try to make a string match
filteredSales = filteredSales.Where(s => s.SaleDate.Value.Year.ToString().Equals(suchbegriff));
}
Michael