Asp.net 使用linq和下拉列表进行搜索

Asp.net 使用linq和下拉列表进行搜索,asp.net,linq,drop-down-menu,Asp.net,Linq,Drop Down Menu,我收到了大约5个类似linq的查询,就像这样SortPerson()metod。我正在尝试开发一个使用下拉列表的搜索,用户可以从下拉列表中选择值,并从用户选择使用的一个或多个下拉列表中返回正确的值 有没有一种更简单的方法来实现这一点?非常感谢您的帮助 public void SortPerson() { var personId = ddlPerson.SelectedValue; var data = new MyModelContext(); var documen

我收到了大约5个类似linq的查询,就像这样
SortPerson()
metod。我正在尝试开发一个使用下拉列表的搜索,用户可以从下拉列表中选择值,并从用户选择使用的一个或多个下拉列表中返回正确的值

有没有一种更简单的方法来实现这一点?非常感谢您的帮助

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();
}

如果仍然只选择一个表,我看不出在没有
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;

你所说的“真实的价值观”是什么意思?用“真实”这个词不合适!我想要的eksampel类似于此页面www.fg.fo/index.asp?pID={DA41DFD0-84F3-4641-9300-AE4E9591A9E4}您不会理解该语言,但您会理解函数性,因为我得到的输入字符串格式不正确。如果下拉列表为emtey?
var personId=ddlPerson.SelectedValue现在personId将为wither null或字符串值。