LINQ group by pomoc w zapytaniu

0

cześć,
piszę z prośbą o pomoc w budowie zapytania LINQ.
Zbudowałem zapytanie, ale za wcześnie pobieram wynik i na nim wykonuję kolejne, a chciałbym, żeby całe to zapytanie poszło po stronie bazy ;)

sytuacja jest taka:

QueryDictionaryValues

-> odpytuje tabelę w postaci (UserDetailsId, UserDetailsDictionaryItemId, Value (bool, na razie pomijam tą wartość)

z kolei

dto.InterestIds

zawiera tablicę intów o które chcę odpytać przez QueryDictionaryValues
zapytanie ma zwrócić wszystkie usersDetailsId, które występują jednocześnie z każdym z dto.InterestIds

przykład


userDetailsId: 1, UserDetailsDictionaryItemId 5
userDetailsId: 1, UserDetailsDictionaryItemId 6
userDetailsId: 2, UserDetailsDictionaryItemId 5
userDetailsId: 2, UserDetailsDictionaryItemId 3
userDetailsId: 3, UserDetailsDictionaryItemId 5
userDetailsId: 3, UserDetailsDictionaryItemId 6


dla zapytania w dto.InterestId[] { 5,6 }
mają zostać zwrócone
userDetailsId[] {1,3}

moje zapytanie po stronie kodu wygląda tak:



            if (dto.InterestIds?.Length > 0)
            {
                int[] typedUsersIds;

                var interestQuery = dao.QueryDictionaryValues()
                    .Where(x => userDetailsIds.Contains(x.UserDetailsId))
                    .GroupBy(x => x.UserDetailsId)
                    .Select(x => new { userId = x.Key, interest = x.Select(y => y.UserDetailsDictionaryItemId) });

                typedUsersIds = interestQuery.Where(x =>
                                !dto.InterestIds.Except(x.interest).Any())
                                .Select(x => x.userId).ToArray();



            }

jednak na etapie .interestQuery.[...].Select identyfikatory są już zaciągnięte z bazy (tzn. zapytanie już się wykonało).
chciałbym to zapytanie połączyć z zapytaniem typedUsersIds
pomoże ktoś ;) ?

0

Jakiego ORM'a uzywasz ?

0

ef core

0
hey-you napisał(a):

ef core

Która wersja? Przed 2.1 grupowanie zawsze odbywało się w pamięci: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation

0
czesiek napisał(a):
hey-you napisał(a):

ef core

Która wersja? Przed 2.1 grupowanie zawsze odbywało się w pamięci: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation

2.0
to szkoda.
a gdyby było to 2.1 to moglibyscie pomoc z zapytaniem ;) ?

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