データベースのデータを検索するために使用したい検索フォームがあります。検索ボックスには 4 つのチェックボックスと 1 つのテキストフィールドがあります。問題は、ユーザーが検索をフィルタリングするためにチェックするテキストボックスを事前に知らないことを考慮して、linqクエリをどのように作成するかです。私がこれまでに持っているものは次のとおりです。
[HttpPost]
public ActionResult search(string ulv, string bjorn, string jerv, string gaupe)
{
var query = (from o in db.observasjonene select o);
if (ulv != null)
{
query = query.Where(o => o.art == ulv);
}
if (bjorn != null)
{
query = query.Where(o => o.art == bjorn);
}
if (jerv != null)
{
query = query.Where(o => o.art == jerv);
}
if (gaupe != null)
{
query = query.Where(o => o.art == gaupe);
}
IEnumerable ls = query.ToList();
return Json(ls, JsonRequestBehavior.AllowGet);
}
「where」句の問題は、条件が真の場合、以前の条件の結果が上書きされることです。「or」ステートメントか何かが必要だと思います..