Linq i wartość kolekcji

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?

4
baza.Where(x => listaIDs.Contains(x.PewnePole))
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.

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 :)

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));
}
0

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

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