在LiteDB中使用多个条件进行搜索:合并查询

时间:2018-07-01 13:49:39

标签: litedb

有人可以告诉我如何使用以下伪代码在liteDb中搜索数据吗?

伪代码

col = db.GetCollection<Product>("products");
string keyword = "1AS";

Query query;

if (condition1)
{
    query += Query.Contains("ProductName", keyword);
}

if (condition2)
{
    query += Query.Contains("ProductModel", keyword);
}

if (condition3)
{
    query += Query.Contains("Note", keyword);
}


if (query.Any()) //
{
    var data = col.Find(query).toList();
}

预先感谢

1 个答案:

答案 0 :(得分:2)

您可以使用Query.And(params Query[] queries),如下所示:

var list = new List<Query>();

if (condition1)
{
    list.Add(Query.Contains("ProductName", keyword));
}
if (condition2)
{
    list.Add(Query.Contains("ProductModel", keyword));
}

...

if (list.Count > 0) //
{
    var q = list.Count == 1 ? list.First() : Query.And(list.ToArray());

    var data = col.Find(q);
}