我使用((ObjectQuery)IQueryable).ToTraceString()
來獲取和調整將由LINQ執行的SQL代碼。如何獲得IQueryable.Count的ToTraceString
我的問題是,不像大多數的IQueryable方法IQueryable.Count因爲這樣定義:
public static int Count(this IQueryable source) {
return (int)source.Provider.Execute(
Expression.Call(
typeof(Queryable), "Count",
new Type[] { source.ElementType }, source.Expression));
}
無需編譯和返回IQueryable的執行查詢。 我希望通過這樣的事情做的伎倆:
public static IQueryable CountCompile(this IQueryable source) {
return source.Provider.CreateQuery(
Expression.Call(
typeof(Queryable), "Count",
new Type[] { source.ElementType }, source.Expression));
}
但隨後的createQuery給了我以下異常:
LINQ to Entities query expressions can only be constructed from instances that implement the IQueryable interface.
太棒了,你知道如何在不使用ObjectContext的情況下在DBContext上實現相同的功能嗎?當我嘗試使用相同的方法 - 它會拋出異常 - 無法創建實例{我想要計算的實體},查詢只能使用原始值 –
@PhilippMunin當我在使用DbContext的項目中嘗試此操作時,它工作得很好。你能否提供更多的細節來展示如何讓它失敗? (我的項目使用了一個相當新的,但仍然是預發佈EF6版本,如果它很重要。) – hvd
我已經創建了單獨的問題:http://stackoverflow.com/questions/19385346/dbcontext-get-iqueryable-for-標量系統函數計數任意總和最大 真的很感激,如果你找到一種方法來做到這一點 –