2012-10-05 19 views
5

Obecnie próbuję zrobić zagnieżdżone zapytania w LINQ, ale otrzymuję komunikat o błędzie:zagnieżdżonych zapytań LINQ, komunikat o błędzie

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

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

nie mogę underestand dlaczego .. jeśli usunę zapytanie dodatkowe i wstawię je na własne ... to jest w porządku.

Typ subcat to collection<>, czy to jest problem?

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

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

    } 
+0

co staramy się więc w subcat ?? czy mógłbyś rozwinąć go ... myślałem, że chcesz dołączyć i wewnętrzny n subcat pomiędzy ParentId a Id .. czy nie? – Usman

+0

w subskrypcji otrzymujesz subcatitem nazwę i subcatid i używasz w obu kwerendy tej samej nazwy tabeli? – Rajpurohit

+0

@Rajpurohit Tak .. jest to tabela relacyjna skierowana do siebie. Powinienem wskazać, że pytam o tę samą tabelę. – user1655940

Odpowiedz

1

W moim projekcie używam kwerendy sub jak to jest poniżej

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

myślę, że to pomoże ....

+1

Myślę, że wiem, na czym polega problem, pierwsza "nowa" anonimowa klasa jest sprzeczna z drugą "nową" anonimową klasą, ponieważ została już stworzona. Nie wiem, jakie jest rozwiązanie ... – user1655940

1

próbowałeś/nazwisko zdefiniować typy zamiast utrzymywania ich anonimowość,

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

Próbowałem tego, to nie pozwala mi się kompilować. W tej instrukcji występuje błąd: wybierz nową podkategorięGrupa() – user1655940

Powiązane problemy