如何使用LINQ进行累积搜索

Any*_*are 0 c# linq asp.net search linq-to-sql

如果我想搜索 req_ser ,req_year .. ,so on fields

我做以下事情:

            if (obj.RequestSerial != 0)
            {
                if (condition != "")
                    condition = condition + " AND ";

                condition += " req_ser= " + obj.RequestSerial;
            }

            if (obj.RequestYear != 0)
            {
                if (condition != "")
                    condition = condition + " AND ";

                condition += " req_year = " + obj.RequestYear;
            }
Run Code Online (Sandbox Code Playgroud)

然后在我的select语句中,我执行以下操作:

SELECT * FROM .... WHERE ..... + condition 
Run Code Online (Sandbox Code Playgroud)

如何使用LINQ TO SQL实体使用相同的概念进行搜索?

mus*_*fan 6

你可以用相同的逻辑做到这一点......

var query = DB.MyItems;

if(conditionA != 0)
    query = query.Where(x => x.A == conditionA);

if(conditionB != 0)
    query = query.Where(x => x.B == conditionB);

var items = query.ToList();
Run Code Online (Sandbox Code Playgroud)

使用您问题中的属性,您的代码可能如下所示:

var query = DB.MyItems;//I don't know what you table it called

if(obj.RequestSerial != 0)
    query = query.Where(x => x.req_ser == obj.RequestSerial);

if(obj.RequestYear != 0)
    query = query.Where(x => x.req_year== obj.RequestYear);

var items = query.ToList();
Run Code Online (Sandbox Code Playgroud)

  • @just_name:不要使用这样的select语句.或者不要在声明中应用where,然后像我说的那样使用`Where`函数. (2认同)