有人能解释为什么这个语句是用OrderBy
编译的,而不是用OrderByDescending
编译的吗?在我看来,它应该有效:https://msdn.microsoft.com/en-us/library/vstudio/bb534316(v=vs.100).aspx
'System.Linq.IQueryable‘不包含'OrderByDescending’的定义,也找不到接受'System.Linq.IQueryable‘类型的第一个参数的扩展方法'OrderByDescending’(您缺少使用指令还是程序集引用?)
目标框架是.Net 4.5.1
。
entity
的类型是System.Data.Entity.DbSet
var comparisonQuery = new ComparisonQuery();
comparisonQuery.Query = entity.Where(whereStatement)
.OrderByDescending(GenOrderByFragment()). // no go
Select(GenBigRowResultObject(elements, idFieldName)).AsNoTracking();
发布于 2015-09-10 18:03:01
@ direction你最初的评论让我走向了正确的方向。结果发现,OrderBy
是通过自定义扩展实现的,而不是像我刚才假设的那样,是框架的扩展。
谢谢你的帮助。
发布于 2015-09-10 18:01:04
正如您在上面的注释中阐述的那样,GenOrderByFragment返回一个字符串。然而,OrderByDescending期望有一个Func<Entity, string>
。
例如:
// this works
Func<Person, string> keySelectorGood = p => "Name";
var goodQuery = entityContext.People.Where(p => p.Name == "John").OrderByDescending(keySelectorGood);
// this DOES NOT WORK
Func<string> keySelectorBad = () => "Name";
var badQuery = entityContext.People.Where(p => p.Name == "John").OrderByDescending(keySelectorBad);
https://stackoverflow.com/questions/32507993
复制相似问题