Wiem więc, że iQueryables są tłumaczone na instrukcje SQL i dlatego nie mogą obsłużyć wszystkich możliwych metod, które można umieścić w klauzuli where.IQueryable dla encji .Where (właściwość jest w tablicy lokalnej)
Ale to, co usiłuję zrobić:
int[] alreadySelectedIds = ...
var subjects = Entities.NewInstance.Subjects.Where(x => Array.IndexOf(alreadySelectedIds, x.Id) == -1).ToList();
i czytanie postu jak te poniżej, jestem pocieszony że EF5 powinien być w stanie przetłumaczyć.
Getting Entities whose keys match list(or array) of ids
Jednak dostaję ten błąd:
LINQ to Entities does not recognize the method 'Int32 IndexOf[Int32](Int32[], Int32)' method, and this method cannot be translated into a store expression.
I googling ten błąd nie daje mi wiele pomóc.
Próbowałem również
var newSubjects = Entities.NewInstance.Subjects.Where(x => alreadySelectedIds.Contains(x.Id)).ToList();
Unable to create a null constant value of type 'System.Int32[]'. Only entity types, enumeration types or primitive types are supported in this context.
i
List<int> alreadySelectedIds = ...
Unable to create a null constant value of type 'System.Collections.Generic.List`1'. Only entity types, enumeration types or primitive types are supported in this context.
utknąłem i mój mózg jest coraz bzdurny poza możliwością dowolnego typu płynnego odzysku. Czy ktoś może mnie uratować?
To dość fantastyczne, jak człowiek może na próżno walczyć z prostym problemem, tylko dlatego, że droga do poprawnego zrozumienia problemu jest tracona wśród rozpaczy i intelektualnej paniki. Ale co może zrobić człowiek, ale być mężczyzną? – Alex
@Alex za dużo filozofii dla informatyki;) Ale ... rzeczywiście! –