Tôi đang cố gắng thực hiện Nối giữa nhiều bảng trong LINQ. Tôi có các lớp sau:
Product {Id, ProdName, ProdQty}
Category {Id, CatName}
ProductCategory{ProdId, CatId} //association table
Và tôi sử dụng mã sau (trong đó product
, category
và productcategory
là các phiên bản của các lớp trên):
var query = product.Join(productcategory, p => p.Id, pc => pc.ProdID, (p, pc) => new {product = p, productcategory = pc})
.Join(category, ppc => ppc.productcategory.CatId, c => c.Id, (ppc, c) => new { productproductcategory = ppc, category = c});
Với mã này, tôi nhận được một đối tượng từ lớp sau:
QueryClass { productproductcategory, category}
Trường hợp danh mục sản phẩm thuộc loại:
ProductProductCategoryClass {product, productcategory}
Tôi không hiểu "bảng" đã tham gia ở đâu, tôi đã mong đợi một lớp duy nhất chứa tất cả các thuộc tính từ các lớp liên quan.
Mục đích của tôi là điền vào một đối tượng khác với một số thuộc tính do truy vấn:
CategorizedProducts catProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });
làm thế nào tôi có thể đạt được mục tiêu này?