2011-01-21 111 views
0

这是我第一次使用实体,我通常使用存储过程。我使用Ado.net实体以及分贝我已经得到了与ID,名称和书签表folderid,名称,URL文件夹表LINQ to ADO.net实体

我能得到的文件夹名称与

protected IEnumerable<folder> GetFolderList() 
{ 
    using (DBEntities db = new DBEntities()) 
    { 
     var folderList = from f in db.folders where f.userId == userid select f; 
     return folderList.ToList(); 
    } 
} 

,并打印与

<%foreach (BookmarksDBModel.folder f in folderList){%> 
    <option value="<%=f.id %>"><%=f.name %></option> 
    <%}%> 

我想获得每个文件夹中的书签的数量,所以我写了

var folderList = from f in db.folders 
        where f.userId == userid 
        select new 
        { 
         linkcount = (from b in db.bookmarks where b.folderId == f.id select b).Count(), 
         f.name, 
         f.id 
        }; 

问题是文件夹类没有名为linkcount的属性。 我需要做什么获得linkcount?我是否需要将其他属性添加到文件夹类?

回答

0

在您的查询,你实际上是返回一个匿名类型,所以你可以写:

var folderList = from f in db.folders 
       where f.userId == userid 
       select new 
       { 
        linkcount = (from b in db.bookmarks where b.folderId == f.id select b).Count(), 
        folder = f 
       }; 

你可以访问信息:

foreach(var folderResult in folderList) 
{ 
    Console.WriteLine("FolderId: " + folderResult.folder.id + ", Count: " + folderResult.linkcount); 
} 
+0

linkcount是ANA匿名类型,它不会返回folderList.ToList(); – nLL 2011-01-21 14:51:03