我正在构建一个UWP应用程序,它使用SQLite数据库在本地存储数据,Azure Mobile App Backend
启用离线同步功能。
我已按照documentation在我的应用中启用了离线同步功能。
现在我想执行一个查询,它会根据特定条件返回表中的行数
通常,我可以使用LINQ
轻松做这样的事情
todoTable.Where(item => item.Completed == true).Count()
但在使用IMobileServiceSyncTable
时,我没有获得LINQ
方法或扩展程序,例如Count
,Distinct
,FirstOrDefault
等。我得到的只是集合由IMobileServiceSyncTable
提供的方法/属性。
我在这里遗漏了一些东西,如果没有,有人可以指导我如何实现这一目标。
以下是代码段。我试图得到图像标题匹配“sometext”的图像数:
IMobileServiceSyncTable<Image> entitySyncTable = AzureBackendService.MobileServiceClient.GetSyncTable<Image>();
int count = entitySyncTable.Where(i => i.Title.Contains("sometext")).Count();
但是我在Count()
上收到了以下错误:
'IMobileServiceTableQuery'不包含'Count'的定义,并且没有扩展方法'Count'接受类型为'IMobileServiceTableQuery'的第一个参数'(您是否缺少using指令或程序集引用?)
答案 0 :(得分:1)
是的,从它创建的IMobileServiceSyncTable
和IMobileServiceTableQuery
不支持LINQ扩展。主要功能位于Where
和ToListAsync
。
如果您想要LINQ查询,可以尝试使用公开IMobileServiceTableQuery<T>.Query
接口的IQueryable<T>
属性。我没有亲自尝试过,也不确定您是否可以直接在该查询中致电FirstOrDefault
或ToList
,或者您需要返回IMobileServiceTableQuery<T>
它似乎设计的场景是:
如果应用程序需要在本地拥有大量服务器数据并且需要进行大量本地过滤,则可能是错误的技术/设计。