我正在为我的研究项目。在施工过程中对我的应用程序搜索引擎,我的代码结束这样的:LINQ-to-Entities查询与.Where子句不按预期过滤
public List<Document> FindDocument(string docName, Company company,
Department departament, Worker worker,
DateTime? enterDate, DateTime? expDate,
State state)
{
IQueryable<Document> query = context.Documents
.Include(p => p.Department)
.Include(p => p.Company)
.Include(p => p.State)
.Include(p => p.Workers);
if (docName != null)
query.Where(p => p.DocumentName.Contains(docName));
if (company != null)
query.Where(p => p.Company.Equals(company));
if (departament != null)
query.Where(p => p.Department.Equals(departament));
if (worker != null)
query.Where(p => p.Workers.Contains(worker));
if (enterDate.HasValue)
query.Where(p => p.EnterDate.Equals(enterDate.Value));
if (expDate.HasValue)
query.Where(p => p.ExpDate.Equals(expDate.Value));
if (state != null)
query.Where(p => p.State.Equals(state));
return query.ToList();
}
搜索条件是可选的,所以我需要检查是否有任何的标准是空值。应用程序是这样做的,如果这个标准没有被使用,那么它的值是空的。
该查询的问题是它总是返回所有文档,而不仅仅是满足条件的文档。我在运行时与调试器进行了检查,以确保如果指定了值,则会评估if
语句体。
geez im so stupid:P我需要睡一会儿!大THX – Pax0r 2010-11-14 22:48:11