Tôi đang cố gắng thực hiện một Tham gia giữa nhiều bảng trong LINQ. Tôi có các lớp sau:Cách thực hiện Tham gia giữa nhiều bảng trong LINQ lambda
Product {Id, ProdName, ProdQty}
Category {Id, CatName}
ProductCategory{ProdId, CatId} //association table
Và tôi sử dụng đoạn mã sau (nơi product
, category
và productcategory
là trường hợp 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 có được một đối tượng từ sau lớp học:
QueryClass { productproductcategory, category}
Trường hợp producproductcategory thuộc loại:
ProductProductCategoryClass {product, productcategory}
Tôi không hiểu nơi "bảng" đã tham gia là, tôi đã mong đợi một lớp một lớp 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à để cư một đối tượng với một số tính chất phát sinh từ việc 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?
Tôi không hiểu ... tại sao ** m.ProdId = ??? ** thay vì ** prodId = m.ProdId **? –
Vì tôi không biết trước cách điều hướng và nhận ProdId – CiccioMiami