2011-10-26 89 views
0

類「PaginatedReport」有兩個成員:我們如何使用Linq在一個對象中填充List?

int TotalResults; 
IList<Report> Reports; 

我嘗試使用此查詢來填充這個類的一個實例:

var reports = (from r in _db.Report 
       where r.res_id == status 
       group r by r.res_id into g 
       select new PaginatedReport 
       { 
        TotalResults = g.Count(), 
        Reports = g.OrderBy(x =>x.res_id).Skip(start).Take(nb).ToList() 
       }); 

我怎樣才能糾正查詢,以避免以下錯誤:
Linq to Entitites無法識別「System.Collections.Generic.List 1[DAL.Report] ToList[Report](System.Collections.Generic.IEnumerable 1 [DAL.Report])」方法,並且此方法無法轉換爲商店。

回答

0

您需要在本地執行最後一步(返回一個匿名類型的Select),而不是讓LINQ提供程序嘗試並將其轉換(推測)爲SQL。類似於:

var reports = from g in (from r in _db.Report 
         where r.res_id == status 
         group r by r.res_id).AsEnumerable() 
       select new PaginatedReport { 
       TotalResults = g.Count(), 
       Reports = g.OrderBy(x =>x.res_id).Skip(start).Take(nb).ToList() 
       }; 

(並且在整個表達式中不需要括號)。

+0

此查詢的新問題:無法將類型'System.Collections.Generic.IEnumerable '隱式轉換爲'ReportManagement.PaginatedReport'。存在明確的轉換(你是否缺少演員?) – Spilarix

+0

@Spilarix不知道你的類型是無法幫助的。使用LINQ,除非使用返回單個元素(如'First')或聚合(如'Sum')的運算符,否則結果將始終爲'IEnumerable '或'IQuery ',其中'T'由final步。 – Richard

相關問題