Tôi có 3 mô hình tên:C# LINQ to Entities truy vấn cho các giao điểm của hai thuộc tính khác nhau
Pencil có Pencil.Id (int) và Pencil.Colors (IEnumerable) Sở hữu
Bút có thuộc tính Pen.Id (int) và Pen.Colors (IEnumerable)
Màu sắc có Id và tên.
Pencil có một mối quan hệ với nhiều màu sắc (nhiều-nhiều) Pen có một mối quan hệ với nhiều màu sắc (nhiều-nhiều)
Tôi muốn xây dựng một truy vấn mà sẽ chỉ cho tôi cùng một màu bút chì cho cây bút mà tôi đang cầm.
Tôi đang sử dụng dưới đây LINQ-to-Đối tượng truy vấn:
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;
mô hình Màu sắc là IEnumerable vì vậy nó có nhiều hơn 1 màu. Ví dụ; bút có 15 màu khác nhau và bút chì có 25 màu khác nhau. Tôi muốn mang bút chì corresonding nếu một trong những màu sắc của cây bút mà tôi đang cầm cũng có thể dùng được trong bảng màu của cây bút chì đó.
Nhưng tôi nhận được ngoại lệ để sử dụng các biến thông thường như int hoặc chuỗi thay vì đối tượng.
Tôi có thể làm gì? Cảm ơn trước sự giúp đỡ của bạn.
EDITED: tôi đã tạo ra một câu hỏi mới cho một vấn đề tiếp theo có thể: C# LINQ to Entities- Properties on the intersection of an object and a collection of objects
bạn chưa kết thúc phức tạp này? Hãy suy nghĩ trở lại SQL đơn giản (đó là những gì truy vấn của bạn sẽ được chuyển đổi sang anyway) có thể bạn không thay vì chỉ nói từ m trong db.Pencils nơi m.Color = p.Màu chọn m? –
Mô hình màu là IEnumerable nên nó có nhiều hơn 1 màu. Ví dụ bút có 15 màu khác nhau và bút có 25 màu khác nhau. Tôi muốn xem nếu một trong những màu sắc của cây bút cũng là avaialable trong quy mô màu của bút chì. – MrGorki
Nếu thuộc tính màu của bạn là số đếm, thì có thể tên 'Màu sắc' hoặc' Bảng màu 'sẽ mô tả rõ hơn ý định của nó. –