2012-10-05 99 views
5

我目前正在做的在LINQ嵌套查询,但我收到一条错误消息:嵌套的LINQ查询,错误消息

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

结果查看= The type '<>f__AnonymousType0<subcatItem,subcatId>' exists in both 'myapplication.dll' and 'System.Web.dll'

我不能underestand为什么..如果我删除子查询,并把它放在它自己的...这很好。

subcat类型是collection<>,这是问题所在吗?

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

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

    } 
+0

你在subcat中试图这么做吗?请你详细说明它...我想你可能想要内部连接我ParentId和Id之间的子版本。不是吗? – Usman

+0

在你的子查询中,你得到了subcatitem名和subcatid,并且你在两个查询中使用相同的表名? – Rajpurohit

+0

@Rajpurohit是..它是一个指向自己的关系表。我应该指出我正在查询同一张桌子。 – user1655940

回答

1

在我的项目,我使用子查询这样它的下面

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

我认为这将有助于你....

+1

我想我知道问题是什么,第一个'新'匿名类与第二个'新'匿名类冲突,因为它已经创建。我不知道解决方案是什么... – user1655940

1

你试图定义/名称的类型,而不是保持他们匿名,

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

我试过这个,它不允许我编译。在这个语句中有一个错误:select new subcategoryGroup() – user1655940