2017-05-10 2 views
0

私は以下の持っているのOrderByは

  • 人物がIQueryable<anonymous>
  • マッパーはタイプのOrderMapper<anonymous>
  • OrderByWithMapperある型であることは、次のとおりです。

    public static IQueryable<T> OrderByWithMapper<T>(this IQueryable<T> source, OrderMapper<T> mapper) { 
        // Method code 
    } 
    
  • OrderMapperクラスは以下の通りです:

    public class OrderMapper { 
        public static OrderMapper<T> For<T>(IEnumerable<T> collection) { 
        return new OrderMapper<T>(); 
        } 
    } 
    
    public class OrderMapper<T> { 
    } 
    

が、結果を作成しようとすると、私はエラーを取得:

'List<<anonymous type: string Name>>' does not contain a definition for 'OrderByWithMapper' 
and the best extension method overload 'OrderByWithMapper<<anonymous type: 
string Name>>(IQueryable<<anonymous type: string Name>>, OrderMapper<<anonymous type: string Name>>)' 
requires a receiver of type 'IQueryable<<anonymous type: string Name>>' 

私は[並べ替えのように間違っているのかわからないですEntityFrameworkのメソッドは匿名で正常に動作します。例えば、

public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector); 

OrderByWithMapperメソッドで匿名型を使用するために変更する必要があるのは何ですか?

答えて

1

IQueryable<T>OrderMapper<T>

エラーメッセージによると、あなたはList<<anonymous type: string Name>>

List<T>上でそれを実行しようとしているIQueryable

を実装するいずれかのあなたの拡張子を変更しないと想定していOrderByWithMapper<T>(this IQueryable<T> source, OrderMapper<T> mapper)あなたの拡張メソッドは、 (IEnumerableなど)を入力するか、入力を変更してIQueryableを入力します。 IQueryableの目的については、this SO postを参照してください。

+0

もちろん!最初の質問の最後にToList()が見つかりませんでした。これはリストになりました... –