2012-10-05 43 views
5

Tôi hiện đang cố gắng thực hiện một truy vấn lồng nhau trong LINQ, nhưng tôi nhận được một thông báo lỗi:truy vấn lồng nhau LINQ, thông báo lỗi

var subcatquery = from categories in mydb.Categories 
        where categories.ParentId == null 
        select new 
        { 
         category = categories.Name, 
         subcat = (from sub in mydb.Categories 
           where sub.ParentId == sub.Id 
           select new 
           { 
            subcatItem = sub.Name, 
            subcatId = sub.Id 
           }) 
        }; 

Xem Kết Quả = The type '<>f__AnonymousType0<subcatItem,subcatId>' exists in both 'myapplication.dll' and 'System.Web.dll'

Tôi không thể underestand tại sao .. nếu tôi loại bỏ các truy vấn phụ và đặt nó vào nó riêng ... nó hoàn toàn tốt đẹp.

loại subcatcollection<>, đây có phải là vấn đề không?

class categoryGroup 
    { 
     public string category; 
     public Collection<subcategoryGroup> subcat; 

    } 
    class subcategoryGroup 
    { 
     public string subcatItem; 
     public int subcatId; 

    } 
+0

những gì bạn đang cố gắng để làm như vậy trong subcat ?? bạn sẽ vui lòng xây dựng nó ... tôi nghĩ bạn có thể muốn tham gia bên trong tôi n subcat giữa ParentId và Id..không phải là nó? – Usman

+0

trong truy vấn con của bạn, bạn nhận được tên subcatitem và subcatid và bạn sử dụng trong cả hai truy vấn cùng tên bảng ?? – Rajpurohit

+0

@Rajpurohit Có .. đó là một bảng quan hệ chỉ vào chính nó. Tôi nên chỉ ra tôi đang truy vấn cùng một bảng. – user1655940

Trả lời

1

Trong dự án của tôi tôi đang sử dụng truy vấn phụ như thế này đó là bên dưới

var data = (from con in dbData.tblPresenters 
         where con.PresenterID == ID 
         select new 
         { 
          Name = con.Name, 

          Title = dbData.tblTitles.Where(x => x.TitleID == con.PresenterTitleID).FirstOrDefault() 
         }).ToList(); 

tôi nghĩ rằng điều này sẽ giúp bạn ....

+1

Tôi nghĩ rằng tôi biết vấn đề là gì, lớp ẩn danh 'mới' đầu tiên đang mâu thuẫn với lớp ẩn danh 'mới' thứ hai bởi vì nó đã được tạo ra. Tôi không biết giải pháp là gì ... – user1655940

1

có bạn đã cố gắng để xác định/tên các loại thay giữ chúng ẩn danh,

var subcatquery = from categories in mydb.Categories 
        where categories.ParentId == null 
        select new categoryGroup() 
        { 
         category = categories.Name, 
         subcat = (from sub in mydb.Categories 
           where sub.ParentId == sub.Id 
           select new subcategoryGroup() 
           { 
            subcatItem = sub.Name, 
            subcatId = sub.Id 
            }) 
        }; 
+0

Tôi đã thử điều này, nó không cho phép tôi biên dịch. Có một lỗi trong câu lệnh này: chọn new subcategoryGroup() – user1655940

Các vấn đề liên quan