Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有匿名类型的OrderBy_C#_Entity Framework_Entity Framework Core_C# 7.0 - Fatal编程技术网

C# 具有匿名类型的OrderBy

C# 具有匿名类型的OrderBy,c#,entity-framework,entity-framework-core,c#-7.0,C#,Entity Framework,Entity Framework Core,C# 7.0,我有以下资料: Context context = new Context(); var persons = context.Persons.Select(x => new { Name = x.Name }); var mapper = OrderMapper.For(persons).Add("name", x => x.Name); var result = persons.OrderByWithMapper(mapper); public static IQue

我有以下资料:

Context context = new Context();

var persons = context.Persons.Select(x => new { Name = x.Name });   

var mapper = OrderMapper.For(persons).Add("name", x => x.Name);

var result = persons.OrderByWithMapper(mapper);
public static IQueryable<T> OrderByWithMapper<T>(this IQueryable<T> source, OrderMapper<T> mapper) {
   // Method code
}
public class OrderMapper {
  public static OrderMapper<T> For<T>(IEnumerable<T> collection) {
    return new OrderMapper<T>();
  }
}

public class OrderMapper<T> {
}
其中:

  • 人员类型为
    IQueryable
  • 映射器的类型为
    OrderMapper
  • OrderByWithMapper
    如下所示:

    Context context = new Context();
    
    var persons = context.Persons.Select(x => new { Name = x.Name });   
    
    var mapper = OrderMapper.For(persons).Add("name", x => x.Name);
    
    var result = persons.OrderByWithMapper(mapper);
    
    public static IQueryable<T> OrderByWithMapper<T>(this IQueryable<T> source, OrderMapper<T> mapper) {
       // Method code
    }
    
    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>>'
“列表”不包含“OrderByWithMapper”的定义
最好的扩展方法重载“OrderByWithMapper(IQueryable,OrderMapper)”
需要“IQueryable”类型的接收器
我不确定哪里出了问题,因为EntityFramework中的OrderBy方法可以很好地用于匿名,例如:

public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);
public static IOrderedQueryable OrderBy(此IQueryable源、表达式keySelector);

我应该在OrderByWithMapper方法中更改什么以使其适用于匿名类型?

您的扩展方法
OrderByWithMapper(此IQueryable源,OrderMapper映射器)
需要
IQueryable
OrderMapper


根据错误消息,您正试图在
列表中执行它,以获取有关IQueryable的更多信息。

当然!我错过了第一个查询末尾的ToList(),它将它变成了一个列表。。。