tengo 3 modelos denominan:C# LINQ a Entidades consulta para la intersección de dos propiedades diferentes
Lápiz tener Pencil.Id (int) y Pencil.Colors (IEnumerable) Propiedad
Pen teniendo propiedad Pen.Id (int) y Pen.Colors (IEnumerable)
Colores teniendo Id y nombre.
lápiz tiene una relación con colores (muchos-a-muchos) pluma tiene una relación con los colores (muchos-a-muchos)
Quiero construir una consulta que me va a mostrar el mismo color lápices para la pluma que estoy sosteniendo.
estoy usando el siguiente consulta LINQ a Entidades:
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;
Colores modelo es IEnumerable por lo que tiene más de 1 color. Por ejemplo; el bolígrafo tiene 15 colores diferentes y el lápiz tiene 25 colores diferentes. Quiero traer el lápiz correspondiente si uno de los colores del bolígrafo que tengo también está disponible en la paleta de colores de ese lápiz.
Pero estoy obteniendo una excepción para usar variables regulares como int o cadena en lugar de objetos.
¿Qué puedo hacer? Gracias de antemano por sus ayuda.
Editado: He creado una nueva pregunta para un próximo número posible: C# LINQ to Entities- Properties on the intersection of an object and a collection of objects
¿no estás complicando más de esto? Piense en SQL simple (que es a lo que su consulta se convertirá de todos modos) ¿no puede simplemente decir desde m en db.Pencils donde m.Color = p.Color seleccione m? –
El modelo de color es IEnumerable por lo que tiene más de 1 color. Por ejemplo, una pluma tiene 15 colores diferentes y una pluma tiene 25 colores diferentes. Quiero ver si uno de los colores de la pluma también está disponible en la escala de colores del lápiz. – MrGorki
Si su propiedad de color es enumerable, entonces tal vez el nombre 'Colors' o' Palette' describa mejor su intención. –