sprawdzanie czy istnieje w bazie

sprawdzanie czy istnieje w bazie
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Witam czy ktoś mógłby mi powiedzieć, czemu mi ten kod nie działa poprawnie?
Program się kompiluje, ale nie działa. Stworzyłem funkcje, która losuje jedną rzecz z bazy i umieszcza ten obiekt w 2 liscie, przy kolejnym wywołaniu tej funkcji sprawdza czy wylosowany obiekt istnieje w tej 2 liście, jeśli tak to losuje jeszcze raz.

Kopiuj
IList AlreadyChosen = new List<IList>();
TABUEntities baza = new TABUEntities();

 public List<HASLA> RandomWords()
        {
           
            List<HASLA> dane = baza.HASLA.OrderBy(x => Guid.NewGuid()).Take(1).ToList();
            bool chose = AlreadyChosen.Contains(dane);
            if (chose)
            {
                RandomWords();
            }
            AlreadyChosen.Add(dane);
            return dane;      
        }

co tutaj jestźle?

E9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 395
0

Przypisujesz do List<HASLA> dane nową referencje a metodą Contains sprawdzasz czy istnieje już w kolekcji taka referencja.

  • Rejestracja: dni
  • Ostatnio: dni
1

Uzupełniając kolegę powyżej, ten kod:

Kopiuj

baza.HASLA.OrderBy(x => Guid.NewGuid()).Take(1).ToList();

A dokładnie ToList(); generuje zawsze nową listę (czyli mam referencje na nowy obiekt). Nawiasem mówiąc warto zainteresować się jak działa LINQ w szczególności w kwestii lazy-evaluation.

E9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 395
0

Dodatkowo to jaki jest sens tworzyć jedno elementowe listy i trzymać je w liście ?

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

podpinam później tą listę poprzez Binding do Widoku.

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5052
0

Ale to serio potrzebujesz listy jednoelementowych list? Coś tu robisz źle.
Co do pytania. Jeśli to jest tak robione (źle), to powinieneś spróbować napisać nową klasę, dziedziczącą po List<HASLA>. Następnie w niej, przesłonić metody: Equals, operator == i GetHashCode. Może to dałoby radę.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.