我得到了大约5个类似于SortPerson()
metod的看起来像linq querys。我正在尝试使用下拉列表开发搜索,用户可以从下拉列表中选择值,并从用户选择使用的一个或多个下拉列表中返回true值。
有没有更简单的方法来开发它?非常感谢帮助
public void SortPerson()
{
var personId = ddlPerson.SelectedValue;
var data = new MyModelContext();
var documents = from d in data.tblDocuments
join sp in data.tblPersons on d.DocPerson equals sp.PersonId
select d;
if (!String.IsNullOrEmpty(personId))
{
documents = documents.Where(c => c.DocPerson.Equals(personId));
}
rptResult.DataSource = documents.ToList();
rptResult.DataBind();
}
答案 0 :(得分:0)
如果您仍然只选择一个表,我没有看到没有Where
的加入点。
如果您希望在未选择Person的情况下显示所有文档,则无法创建更简单的方法。你可以写得更短,如:
var documents =
from d in data.tblDocuments
join ...
where String.IsNullOrEmpty(personId) || d.DocPerson equals personId
select d;
因此您不需要单独的if
声明。
如果您想使用5个下拉列表中的多个值并在单个查询中将它们用作条件,只需添加更多条件:
var personId = ddlPerson.SelectedValue;
var someValue = ddlSomeDDL.SelectedValue;
//3 more values from DDL
var documents = from d in data.tblDocuments
join sp in data.tblPersons on d.DocPerson equals sp.PersonId
where (String.IsNullOrEmpty(personId) || sp.PersonId equals personId)
&& (String.IsNullOrEmpty(someValue) || d.SomeColumn equals someValue)
//3 more conditions
select d;