Wyszukiwanie po zmiennej typu DateTime

Odpowiedz Nowy wątek
2015-02-02 16:25
Mały Szczur
0

Grafik

start
start
dzien |

Cześć,
Mam problem, ponieważ posiadam taką bazę danych jak wyżej gdzie użytkownik deklaruje godziny przyjścia do pracy i wyjścia oraz dzień w który zjawi się w pracy. Wiadomo, że tabela ma więcej pól, ale jako że wszystko rozbija się o zmienną typu DateTime nie ma sensu, żebym ją tu prezentował. Wracając do sedna, problem jest w tym, że gdy powiedzmy 5 pracowników zadeklaruje dni w które przyjdzie do pracy, ja chciałbym wyciągnać z bazy wszystkie dni o określonej dacie. Np chciałbym wyświetlić pracowników którzy zjawią się w pracy za tydzień w poniedziałek czyli 09.02.2015.

 @using (Html.BeginForm())
{
<p>
Title: @Html.TextBox("searchstring") <br />
<input type="submit" value="Filter" />
</p>
}
public ActionResult Grafik(string searchstring)
{

var days = from m in db.Grafik
select m;
if (!String.IsNullOrEmpty(searchstring))
{ days = days.Where(s => s.dzien.Equals(searchstring)); }
return View(days);

} 

Kombinuje w ten sposób, ale wiadomo, że przekazywanie za pomocą stringa to mizerne rozwiązanie, poza tym jak już przekazuje string do porównania z kolumną typu DateTime, to wyskakują błędy, że tych wartości nie można porównać.

Bardzo proszę o pomoc i wyrozumiałość, bo jestem mocno początkujący :)

Pozostało 580 znaków

2015-02-02 16:46
0

Coś takiego powinno zadziałać:

var dt = DateTime.Parse("searchString");
//i w linq
s=> s.dzien.Date == dt.Date

Pozostało 580 znaków

2015-02-02 19:34
Mały Szczur
0

Okej zaraz spróbuję i dam znać.

Pozostało 580 znaków

2015-02-02 22:41
Mały Szczur
0

The string was not recognized as a valid DateTime. There is an unknown word starting at index 0.

Jakiś pomysł?

Pozostało 580 znaków

2015-02-02 22:59
0

Pomyłka, miało być tak:

DateTime.Parse(searchString);

Ta data musi też być w odpowiednim formacie aby mogła być sparsowana.

Pozostało 580 znaków

2015-02-02 23:02
0

Co się kryje pod searchString? Jak masz tam jakiś format daty inny niż twoje ustawienia regionalne możesz użyć funkcji DateTime.ParseExact:

DateTime now = DateTime.ParseExact("13.12.2015", "dd.MM.yyyy", null);

https://msdn.microsoft.com/en[...]cs-lang=csharp#code-snippet-2


Yubby dibby dibby dibby dibby dibby dibby dum..

Pozostało 580 znaków

2015-02-02 23:10
0

Jak przedmówcy powiedzieli musisz sparsować string na typ DateTime zapomocą metod DateTime.Pares(), bądź DateTime.ParseExact(). Po sparsowaniu stosujesz zwykłe porównanie:

  var result = (from dt in db.Tabela where dt.data== data select dt ).ToList();

Pozostało 580 znaków

2015-02-02 23:12
Mały Szczur
0

Pod search string kryje się to co zostanie przesłane przez użytkownika z poniższego formularza:

 @using (Html.BeginForm())
{
<p>
Title: @Html.TextBox("searchstring") <br />
<input type="submit" value="Filter" />
</p>
}

w mojej bazie danych format daty w kolumnie wygląda YYYY-MM-DD HH:MM:SS
ja próbuję wpisać http://localhost:29910/Admin/Grafik?searchstring=2015-01-01
i zwrot
The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

Pozostało 580 znaków

2015-02-02 23:16
0

Chcesz się bawić w zgaduj zgadule z tym co użytkownik miał na myśli wpisując datę do textboxa? Daj wybór daty z DatePicker'a.


Yubby dibby dibby dibby dibby dibby dibby dum..

Pozostało 580 znaków

2015-02-02 23:18
Mały Szczur
0

mam datepickera spokojnie, jest przeznaczony dla tych którzy deklarują godziny przyjścia do pracy
ja jako admin mogę ręcznie wpisywać datę nie stanowi to problemu :)

Pozostało 580 znaków

2015-02-02 23:31
0

Zdaje się że nie można pobrać dt.Date w linq. Spróbuj tak, ale też nie sprawdzałem.

var dt = DateTime.Parse(searchString).Date;
//i w linq
s => EntityFunctions.TruncateTime(s.dzien) == dt
edytowany 1x, ostatnio: dam1an, 2015-02-02 23:31

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0