Xamarin Forms:如何从本地数据库查询含特定值的所有数据项
实现本地数据库的模糊查询(获取所有包含特定值的数据项)
嘿,看你已经用SQLite-net(从代码风格能看出来)搭好了本地数据库的基础查询方法,现在要扩展一个查询所有包含特定值的数据项的功能,这里给你适配现有代码的具体实现:
完整方法代码
直接新增一个方法就行,保持你现有的线程安全锁机制,用LINQ的Contains实现模糊匹配:
public List<MyCommunities> GetItemsContainingValue(string searchValue) { lock (locker) { // 这里默认匹配officeName字段,你可以换成你需要的任意模型属性 return database.Table<MyCommunities>() .Where(item => item.officeName.Contains(searchValue)) .ToList(); } }
几个关键细节要注意
- 线程安全不丢:和你现有方法一样,用
lock (locker)包裹,避免多线程操作数据库时出问题。 - 模糊匹配的底层逻辑:
Contains会被SQLite-net自动转换成SQL的LIKE '%xxx%'语句,完美实现“包含特定值”的查询效果。 - 灵活切换匹配字段:如果要匹配其他字段(比如社区名称、ID之类的),把
item.officeName换成对应的属性就行,比如item.CommunityName.Contains(searchValue)。 - 空值兜底处理:怕传入的
searchValue是空字符串?可以加个小判断:if (string.IsNullOrEmpty(searchValue)) { // 这里可以返回所有数据,或者空列表,看你业务需求 return GetItems(); }
顺便补全你没写完的方法
你之前的GetItemByOfficename代码好像没写完,给你补个完整版本参考:
public MyCommunities GetItemByOfficename(string office) { lock (locker) { return database.Table<MyCommunities>() .FirstOrDefault(item => item.officeName == office); } }
内容的提问来源于stack exchange,提问作者Sreejith Sree
相关产品推荐
相关产品推荐

