【问题标题】:Multiple Query Conditions using Sqlite-net使用 Sqlite-net 的多个查询条件
【发布时间】:2014-03-24 14:24:05
【问题描述】:

我正在开发一个小型 Windows 应用商店应用程序,我正在使用 sqlite-net

我有一个人的数据库,每个人都有名字、身份证、性别等

在我的项目中有一个要在这个数据库中搜索的视图。 用户可以插入一个或多个信息进行搜索。

所以,我构建了搜索对象 (OPerson),我想用它来达到目标​​。

现在我为这个人的每个属性创建了一个函数,比如“searchById”“searchByName”等等。最后我结合这些函数来得到结果

是否可以使用 sqlite-net 的强大功能创建一个独特的方法,将所有内容连接起来?还可以检查某些属性的值

如果我传递一个对象 OPerson

Id = null
Name = John
Age = null
Sex = male

是否可以编写查询来实现该目标?类似这样的伪代码

pers = (from p in db.Table<Persons>() 
                     where (if OPerson.Id !=null) p.Id==OPerson.Id}
                     AND {(if OPerson.Name !=null) p.Name.Contains(OPerson.Name)}
                     AND {(if condition) where-contion}
                     select p).ToList();

【问题讨论】:

    标签: c# winrt-xaml sqlite-net


    【解决方案1】:

    我建议您分几个步骤构建您的查询。通过这种方式,您可以将条件带到查询之外,从而使其更清晰,并为您提供更多控制权。像这样的:

    var pers = from p in db.Table<Persons>() 
               select p;
    
    if(OPerson.Id !=null)
        pers = pers.Where(p => p.Id==OPerson.Id);
    if(OPerson.Name !=null)
        pers = pers.Where(p => p.Name.Contains(OPerson.Name);
    ....
    ....
    var results = pers.ToList();
    

    此代码仍会生成一个查询,该查询仅在您调用 ToList() 方法时执行一次。

    【讨论】:

    • 抱歉,我的笔记本电脑 O.o 有问题
    猜你喜欢
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 2011-05-26
    • 2012-12-01
    相关资源
    最近更新 更多