2012-10-05 5 views
5

Attualmente sto cercando di fare una query nidificate in LINQ, ma sto ricevendo un messaggio di errore:di query nidificate LINQ, il messaggio di errore

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 
           }) 
        }; 

Visualizza risultati = The type '<>f__AnonymousType0<subcatItem,subcatId>' exists in both 'myapplication.dll' and 'System.Web.dll'

non posso underestand perché .. se rimuovo la query secondaria e la metto su proprio ... è perfettamente a posto.

il tipo subcat è un collection<>, è questo il problema?

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

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

    } 
+0

quello che stai cercando di fare in sottotitolo ti prego di elaborarlo ... ho pensato che potresti volere unirsi interiore io n subcat tra ParentId e Id..non è vero? – Usman

+0

nella tua query secondaria si ottiene il nome subcatitem e subcatid e si utilizza in entrambi query nome della stessa tabella ?? – Rajpurohit

+0

@Rajpurohit Sì .. è una tabella relazionale che punta a se stessa. Dovrei sottolineare che sto interrogando lo stesso tavolo. – user1655940

risposta

1

Nel mio progetto sto usando sub query come questa che sia al di sotto

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(); 

Penso che questo vi aiuterà a ....

+1

Penso di sapere qual è il problema, la prima 'nuova' classe anonima è in conflitto con la seconda 'nuova' classe anonima perché è già stata creata. Non so quale sia la soluzione ... – user1655940

1

Hai provato a definire/nome i tipi invece di mantenerli anonimi,

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

Ho provato questo, non mi permette di compilare. C'è un errore in questa affermazione: seleziona nuova sottocategoria Gruppo() – user1655940