что-то вроде этого я не скомпилировал и не проверил, но это должно дать вам подсказку.
public List<ProductReqNoDate> GetRequestsQuery(string departmant, int reqStateID, string firstDate, string lastDate)
{
using(var db = new requestsDBEntities())
{
DateTime dtfirstDate =null;
DateTime.TryParse(firstDate,out dtfirstDate);
DateTime dtlastDate = null;
DateTime.TryParse(lastDate,out dtlastDate);
var result = (from r in db.requests
where
(r.departmant == departmant)
|| (r.reqDate <= dtlastDate.Value && r.reqDate >= dtfirstDate.Value)
select new ProductReqNoDate
{
departmant = r.departmant,
reqNo = r.reqNo ,
reqDate = r.reqDate ,
prdctName= stringCutter((from p in db.products where p.reqNo == r.reqNo select p.prdctName).FirstOrDefault())
}).ToList();
}
}
РЕДАКТИРОВАТЬ:
, если вы хотите использовать не-sql функции в вашем фильтре, затем вызвать ToList () для вашей таблицы
var result = db.requests.ToList().Where(r => {
// do test for what you want
// so write a function to work out when you want to filter by
// name or date
return true;
}).Select( r => new ProductReqNoDate
{
departmant = r.departmant,
reqNo = r.reqNo ,
reqDate = r.reqDate ,
prdctName= stringCutter(db.products.Where(p=> p.reqNo == r.reqNo).Select(p=> p.prdctName).FirstOrDefault())
})
проблема с этимявляется то, что вы загружаете всю таблицу в память, что, если хорошо, если вы не часто меняете значения в ней и если она не слишком велика.
Другой подход - записать ее как хранимый процесс, который будетвозможно, сделайте своего администратора счастливым.