0

私は小さな Windows ストア アプリを開発しており、sqlite-net を使用しています。

人のデータベースを取得しました。各人には名前、ID、性別などがあります

私のプロジェクトには、このデータベース内を検索するためのビューがあります。ユーザーは、検索する 1 つまたは複数の情報を挿入できます。

そこで、検索オブジェクト (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();
4

1 に答える 1

0

いくつかのステップでクエリを作成することをお勧めします。このようにして、条件をクエリの外に出すことができます。これにより、クエリがよりクリーンになり、より多くの制御が可能になります。このようなもの:

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();

このコードでも、メソッドを呼び出したときに 1 回だけ実行される 1 つのクエリが生成されますToList()

于 2014-03-24T14:32:16.877 に答える