2017-06-13 119 views
0

我建立它使用SQLite數據庫來存儲本地數據和Azure Mobile App Backend啓用離線同步功能的應用UWP。 我已按照documentation在我的應用中啓用離線同步功能。 現在我想執行一個查詢這將取決於一定的條件 正常返回我的行數在表中,我可以用LINQ輕鬆地做這樣的事情Azure的移動應用離線同步:與IMobileServiceSyncTable工作使用LINQ

todoTable.Where(item => item.Completed == true).Count() 

但隨着IMobileServiceSyncTable工作時我不越來越LINQ方法或擴展名如CountDistinctFirstOrDefault等我得到的是IMobileServiceSyncTable提供的一套方法/屬性。

enter image description here

我失去了一些東西在這裏,如果不是有人可以請指導我如何可以做到這一點。

以下是代碼片段。我想獲得在圖像標題「SomeText」則會匹配的圖像的數量:

IMobileServiceSyncTable<Image> entitySyncTable = AzureBackendService.MobileServiceClient.GetSyncTable<Image>(); 
int count = entitySyncTable.Where(i => i.Title.Contains("sometext")).Count(); 

但是我獲得以下錯誤的Count()

「IMobileServiceTableQuery」不包含「計數的定義'和沒有擴展方法‘計數’接受型的第一參數‘IMobileServiceTableQuery’可以找到(是否缺少using指令或程序集引用?)

+0

您可以添加的代碼段,你利用同步表,並創建查詢?謝謝 – woelliJ

+0

@woelliJ添加了代碼片段。 –

回答

1

是的,IMobileServiceSyncTable和0123由它創建的不支持LINQ擴展。主要功能在WhereToListAsync

如果你想要LINQ查詢,你可以嘗試使用IMobileServiceTableQuery<T>.Query屬性,它暴露了IQueryable<T>接口。我還沒有試過,個人,我不知道你是否可以打電話FirstOrDefaultToList直接上可查詢,或者你需要回到IMobileServiceTableQuery<T>

現在看來,這是專爲場景是:

  • 其中用戶項目已在服務器上過濾以僅返回用戶項目的任何類型的用戶特定項目。
  • 對於可以定期更新,最終將失去價值,並可以清除

如果應用程序需要有很多本地服務器的數據,需要做大量的本地過濾的所有用戶的瞬時數據它可能是錯誤的技術/設計。

+0

我曾嘗試下面的代碼:'IMobileServiceTableQuery 查詢= entitySyncTable.CreateQuery(),其中(i => i.Title.Contains( 「SomeText」 則會))計數();',如果這是你指什麼變化。也有同樣的問題,因爲'Query'的createQuery後'不公開'LINQ' –

+0

()'你可以得到'Query'屬性,並嘗試在那裏LINQ。我不確定它會工作。如果你當前的'Where'子句不起作用,那很可能,因爲'string.Contains'沒有實現,SQLite存儲 – woelliJ

+0

嘗試過但是同樣的問題。 –

相關問題