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(),它将它变成了一个列表。。。