我正在使用api开发一个可以从移动客户端访问的网站,该应用类似于http://zomato.com/
假设我们有桌车(carID,型号,制造商,传输,fuleType,其他选项)
用户可以查询任何字段,查询也可能包含其他表中的字段,例如,如果我为制造商和模型创建单独的表。
当然我可以在所有字段上使用like子句查询,这是正确的方法吗?何时可能有数千条记录?
使用移动应用程序或网站时,我需要快速的数据库响应实时查询。
我最熟悉.Net,但如果你给我任何其他建议并引导我完成起点(图书馆,现有的开源项目),我会很高兴。
注意:用户只有一个搜索字段和可选的过滤器,如模型,类别等......
答案 0 :(得分:0)
这就是我要做的事。
使用IQueryable
构建查询。您可以使用if语句检查任何参数是否具有值,如果是,则将where语句附加到查询中。一旦您的查询全部设置,请使用.ToList
或.AsEnumerable
将其发送到内存。
public List<Data> Search (string param1, string param2)
{
IQueryable<Data> query = db.SomeTable;
if (!String.IsNullOrEmpty(param1))
query = query.Where(m => m.Field1 == param1); // might use contain depending on your use case
if (!String.IsNullOrEmpty(param2))
query = query.Where(m => m.Field2 == param2);
return query.ToList();
}
我还会使用Skip
和Take
进行分页。
编辑:我想要注意,这与我所知道的数据库一样快,如果有其他人知道更快的功能,请告诉我。您可以通过使用NoSQL数据库和静态文档来实现更快的响应,但对于数千条记录,数据库应该可以正常工作。