Linq i wartość kolekcji

Odpowiedz Nowy wątek
2018-11-09 00:27
Biały Rycerz
0

Cześć
Moim celem jest wyciągnąć z bazy dane, które spełniają warunek, którego wartości zawarte są w liście.
Np. mam jakąś listę IDs, która zawiera jakieś wartości { 1, 5, 9, 10 } i teraz chciałbym za pomocą Linq wyciągnąć elementy z bazy, których pewne pole jest równe jednej z wartości listy IDs.
Czy można osiągnąć taki efekt przy użyciu tylko jednego zapytania operując na kolekcji IQueryable?

Pozostało 580 znaków

2018-11-09 01:35
4
baza.Where(x => listaIDs.Contains(x.PewnePole))

Pozostało 580 znaków

2018-11-11 02:26
1

W tytule LINQ, w tagach ASP.NET, a w pytaniu tak naprawdę chodzi o Entity Framework.
To trochę tak, jakby iść do warsztatu i powiedzieć, że samochód jest przechylony na prawo, a tak faktycznie, to podłoga w garażu krzywa.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

wczoraj, 14:39
Biały Rycerz
0
mad_penguin napisał(a):
baza.Where(x => listaIDs.Contains(x.PewnePole))

Nie wiem czy dobrze mnie zrozumiałeś, więc posłużę się przykładem. Mam w bazie jakieś produkty, które mają właściwość opisującą producenta. W wyszukiwarce produktów ustawiam sobie kilku producentów, których produkty chcę pokazać.
Dla zobrazowania problemu przedstawiam kod, w którym wyszukuje produkty tylko jednego producenta.

public IEnumerable<Product> GetProducts(int manufacutrerId)
{
            IQueryable<Product> products = context.Products.AsQueryable();
            if (manufacutrerId != 0)
                products = products.Where(p => p.Manufacturer.Id == manufacutrerId);
 
           return products;
}
 

Teraz zamiast int-a w argumencie, chciałbym przekazać całą tablice bądź listę.

somekind napisał(a):

W tytule LINQ, w tagach ASP.NET, a w pytaniu tak naprawdę chodzi o Entity Framework.
To trochę tak, jakby iść do warsztatu i powiedzieć, że samochód jest przechylony na prawo, a tak faktycznie, to podłoga w garażu krzywa.

Może i masz rację. Popełnianie błędów jest częścią procesów nauki :)

edytowany 1x, ostatnio: somekind, wczoraj, 15:32

Pozostało 580 znaków

wczoraj, 14:46
0

coś w ten deseń

public IEnumerable<Product> GetProducts(IEnumerable<int> manufacturerIds)
{
  IQueryable<Product> products = context.Products.AsQueryable()
    .Where(p => manufacturerIds.Contains(p.Manfucaturer.Id));
}

Pozostało 580 znaków

wczoraj, 15:25
Biały Rycerz
0

Dzięki, @john_klamka. Teraz przejrzałem na oczy, że odpowiedź @mad_penguin także była jak najbardziej trafna. Dzięki Wam!

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