2015-09-10 45 views
0

有人可以解釋爲什麼語句與OrderBy編譯但不是OrderByDescending?在我看來,它應該工作:https://msdn.microsoft.com/en-us/library/vstudio/bb534316(v=vs.100).aspx'System.Linq.IQueryable'不包含'OrderByDescending'的定義

「System.Linq.IQueryable」不包含一個定義 「OrderByDescending」,沒有擴展方法「OrderByDescending」 接受型System.Linq的的「第一個參數。 IQueryable的」可能是 (是否缺少using指令或程序集引用?)

目標框架是.Net 4.5.1
類型的entitySystem.Data.Entity.DbSet

var comparisonQuery = new ComparisonQuery(); 
comparisonQuery.Query = entity.Where(whereStatement) 

.OrderByDescending(GenOrderByFragment()). // no go 

Select(GenBigRowResultObject(elements, idFieldName)).AsNoTracking(); 
+3

看起來你正在使用,而不是''IQueryable' IQueryable的' –

+0

@LucasTrzesniewski有不'IQueryable'在框架eoither的'OrderBy'擴展方法。 –

+1

'GenOrderByFragment()'返回什麼類型? –

回答

0

,正如上述評論闡述,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); 
+0

你的迴應總是有道理,但我的問題更加簡單,對我而言是個不好的假設......謝謝 – BlazingFrog

1

@ d-士丹利原來的評論寄給我在正確的方向。 原來,OrderBy是通過自定義擴展實現的,而不是像我立即假定的框架擴展。
感謝您的幫助。

相關問題