sprawdzanie czy istnieje w bazie

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.

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?

0

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

1

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


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.

0

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

0

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

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ę.

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