2014-03-28 23 views
2

正在創建分頁和每頁獲取10個JSON記錄:可以找到odata總記錄而不用提取它們嗎?

var coursemodel = query.Skip(skip).Take(take).ToList(); 

我需要在網頁上顯示的數據庫中可用的總記錄數。例如,您正在查看x的20到30(其中x是記錄的總數)。 x可以在沒有通過網絡傳輸記錄的情況下找到?

回答

1

對其進行排序。這篇

http://yourserver7:40479/odata/Courses?$top=1&skip=1&$inlinecount=allpages

得到這個

{ 
    "odata.metadata":"http://yourserver7:40479/odata/$metadata#Courses","odata.count":"503","value":[ 
    { 
     "CourseID":20,"Name":"Name 20","Description":"Description 20","Guid":"Guid 20" 
    } 
    ] 
} 

我再從odata.count得到了價值!我的網址獲取找到的所有記錄,在適用處添加$ filter ...

+0

OData 4.0不支持查詢參數'$ inlinecount'。您的答案與早期版本的OData相關。 – mrDinkelman

1

可以使用$count運營商繼續沿着這條返回的記錄總數,東西:

http://services.odata.org/OData/OData.svc/Categories(1)/Products/$count 

不知道語法將使用LINQ是什麼,但可以肯定它是可能的。

PS - 總是一個很好的參考:http://www.odata.org/documentation/odata-version-2-0/uri-conventions/

+0

感謝您的回覆。它看起來像在dbase表中查找總記錄的唯一方法是使用web.api計數端點 – Steve

+0

http:// localhost:40479/odata/Courses?$ inlinecount = allpages這會給出元數據中的計數值,但我不知道如何在C#中訪問它 – Steve

+0

你是否通過服務引用調用它?不知道你在c#中訪問它意味着什麼。 – Schandlich

0

就試試這個:

context.EFCars.Where(c => c.Description == desc).Count(); 

凡EFCars是一個實體集名稱。

相關問題