Zapytanie Linq

Odpowiedz Nowy wątek
2018-11-01 22:41
0

Hej, nie mam pojęcia jak zmodyfikować kod query aby osiągnąć coś takiego :

 List<Books> listaKsiazek = new List<Books>();      
        foreach (int a in listaKsiazekID)
        {
            var query = (from x in db.Books where x.BookID == a select x).ToList();
            listaKsiazek = query.ToList();
        }

W skrócie listaKsiazekID - zawiera elementy typu int (ID książek).
listaKsiazek - zawiera obiekty Book i poprzez foreach chcę dodać do listaKsiazek wszystkie obiekty Book zgodne z warunkiem where x.BookID == a select x. Ale zwraca mi tylko jeden ostatni obiekt Book, nie wiem jak zmodyfikować zapytanie query, aby zawierało iterację (foreach) z warunkiem

Pozostało 580 znaków

2018-11-02 00:12

Zwraca ostatni, ponieważ w każdej iteracji nie dodajesz książki do listy, a nadpisujesz całą listę. Musiałbyś użyć AddRange, albo Add i zamienić ToList na Single. Natomiast można to zrobić prościej jednym zapytaniem:

List<Books> listaKsiazek = (from x in db.Books where listaKsiazekID.Contains(x.BookID) select x).ToList()
edytowany 1x, ostatnio: mad_penguin, 2018-11-02 00:13
Dzięki wielkie, za pomoc - amator963 2018-11-02 00:20

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