Ho 3 modelli denominati:C# query LINQ to Entities per l'intersezione di due diverse proprietà
matita avendo Pencil.Id (int) e Pencil.Colors (IEnumerable) Proprietà
Penna con proprietà Pen.Id (int) e Pen.Colors (IEnumerable)
Colori aventi ID e nome.
Matita ha una relazione con i colori (molti-a-molti) Pen ha una relazione con i colori (molti-a-molti)
voglio costruire una query che mi mostrerà lo stesso colore matite per la penna che sto tenendo.
Sto usando il seguito di query LINQ to Entities:
int id = id_of_the_pen_that_i_am_holding;
Pen p = db.Pens.Find(id);
var list = from m in db.Pencils where m.Colors.Intersect(p.Colors) != null select m;
Colori modello è IEnumerable quindi ha più di 1 colore. Per esempio; la penna ha 15 diversi colori e la matita ha 25 diversi colori. Voglio portare la matita corresonding se uno dei colori della penna che sto tenendo è anche disponibile nella tavolozza dei colori di quella matita.
Ma sto ottenendo un'eccezione per utilizzare variabili regolari come int o stringa piuttosto che oggetti.
Cosa posso fare? Grazie in anticipo per i tuoi aiuti.
Modificato: Ho creato una nuova domanda per un prossimo numero possibile: C# LINQ to Entities- Properties on the intersection of an object and a collection of objects
non sei più di complicare questo? Ripensa a SQL semplice (che è quello che verrà convertito in ogni caso) non puoi invece dire semplicemente da m in db.Pencils dove m.Color = p.Color seleziona m? –
Il modello di colore è IEnumerable quindi ha più di 1 colore. Ad esempio, una penna ha 15 colori diversi e una penna ha 25 colori diversi. Voglio vedere se uno dei colori della penna è disponibile anche nella scala dei colori della matita. – MrGorki
Se la proprietà del colore è enumerabile, forse il nome 'Colori' o 'Tavolozza' descriverà meglio l'intento. –