mvcアプリケーションでjquerydatatablesプラグインを使用しています。フィルタリングは、文字列データ型のフィールドに対して完全に機能します。しかし、最初に結果を列挙せずに、文字列以外のフィールドに対してフィルタリングを使用することはできません。これが私のコードです。
public List<MerchAgreementMain> getAgreementbyAccountNo(jQueryDataTableParamModel model)
{
var entity = new CCMSEntities();
var query = (from _first in entity.First
from _second in entity.Second
where _first.No == _second.No
select new MerchAgreementMain
{
AcctNo = _Account.AcctNo, // datatype long
BusnName = _Account.BusnName,
CreatedBy = _Account.CreatedBy,
CreationDate = _Account.CreationDate ?? DateTime.MinValue,
Status = _Reflib.Descp
});
if (model.sSearch != null)
{
var x = query.AsEnumerable().Where(p => Convert.ToString(p.AcctNo).Contains(model.sSearch) || p.BusnName.Contains(model.sSearch) || p.CreatedBy.Contains(model.sSearch)||
p.Status.Contains(model.sSearch));
this.displayRecods = x.Count();
return x.ToList();
}
//var result = query.ToPagedList(Convert.ToInt16(model.sEcho),Convert.ToInt16(model.iDisplayLength));
return query.ToList();
}
これは正常に機能します。ただし、問題は、フィルターを適用する前にクエリが最初に列挙され、データベースに数千のレコードが含まれていることです。これは悪い習慣のようであり、フィルタリングされた結果が表示されるまでに多少の遅延が生じる可能性があります。Iqueryableにフィルターを長時間適用するにはどうすればよいですか?