2011-10-26 18 views
0

クラス「Pag​​inatedReport」は、2人のメンバーがあります。Linqを使用してオブジェクトにリストを挿入するにはどうすればよいですか?

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

は、どのように私は次のエラーを回避するために、問合せを修正することができます。
エンティティに "System.Collections.Generic.List 1[DAL.Report] ToList[Report](System.Collections.Generic.IEnumerable 1 [DAL.Report]"メソッドが認識されず、このメソッドをストアに変換することはできません。

答えて

0

LINQプロバイダに(おそらくは)SQLへの変換を試みさせるのではなく、最後のステップ(匿名型を返すSelect)をローカルで実行する必要があります。次のようなものがあります。

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 'ステップ。 – Richard

関連する問題