Quindi so che iQueryables sono tradotti in istruzioni SQL e quindi non possono gestire tutti i possibili metodi che è possibile inserire in una clausola where.IQueryable per entità. Dove (la proprietà è nell'array locale)
Ma questo è quello che sto cercando di fare:
int[] alreadySelectedIds = ...
var subjects = Entities.NewInstance.Subjects.Where(x => Array.IndexOf(alreadySelectedIds, x.Id) == -1).ToList();
e post lettura come questi qui di seguito, sto confortato che EF5 dovrebbe essere in grado di tradurre questo.
Getting Entities whose keys match list(or array) of ids
Tuttavia, sto ottenendo questo errore:
LINQ to Entities does not recognize the method 'Int32 IndexOf[Int32](Int32[], Int32)' method, and this method cannot be translated into a store expression.
E googling questo errore non mi dà molto aiuto.
Ho anche provato
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.
e
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.
Sono bloccato e il mio cervello sta ottenendo pastoso al di là della possibilità di qualsiasi tipo di recupero grazioso. Qualcuno può gentilmente salvarmi?
È piuttosto fantastico come un uomo possa lottare invano con un semplice problema, solo perché il sentiero per la corretta comprensione del problema è perso tra disperazione e panico intellettuale. Ma cosa può fare un uomo, ma essere un uomo? – Alex
@Alex troppa filosofia per l'informatica;) Ma ... anzi! –