2011-01-21 3 views
0

Это первый раз, когда я использую сущности, я обычно использую хранимые процедуры. Я использую ADO.NET Entities и на дб я ве получил папки таблицу с ID, имя и закладок таблицы с folderid, имя, URLLINQ to ADO.net Entities

я могу получить имена папок с

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 является ана анонимного типа и не возвращает returnList.ToList(); – nLL