0

我有一个 asp.net mvc 项目,其中有搜索过滤器表单和 8 个参数,这些参数来自我的表单,并且必须为空。当我填充搜索表单中的所有字段时,一切正常。但是当我持有缺失的字段时,它会返回表中的所有行。我有下一个表达式:

var model = repository.GetRows()
.Where(x => x.Var1 == Var1 || x.Var2 == Var2 || 
x.Var3 == Var3 || x.Var4 == Var4 || 
x.Var5 == Var5 || x.Var6 == Var6 || 
x.Var7 == Var7 || x.Var8 == Var8).ToList();

检查空变量有什么技巧吗?因为我要写很多if/else语句,我觉得是不对的。

4

2 回答 2

1

您可以使用空合并运算符“??”

where(x => x.Var1 == (Var1 ?? x.Var1));

这只是说如果 Var1 为空,则使用字符串“SomeValue”。

于 2013-09-19T12:21:59.663 回答
0

首先,我建议您从 repository.GetRows()返回 IQueryable 然后您可以执行如下查询:-

public List<Entity.Student> SearchStudent(string Name, int Age, string EmailAddress, string CountryName)
    {
        IQueryable<Entity.Student> lstStudents = this.GetAllStudent();
        if (!string.IsNullOrEmpty(Name))
        {
            lstStudents = lstStudents.Where(node => node.FirstName.Equals(Name) || node.LastName.Equals(Name));
        }
        if (Age > 0)
        {
            lstStudents = lstStudents.Where(node => node.Age == Age);
        }
        if (!string.IsNullOrEmpty(EmailAddress))
        {
            lstStudents = lstStudents.Where(node => node.Email.Equals(EmailAddress));
        }
        if (!string.IsNullOrEmpty(CountryName))
        {
            lstStudents = lstStudents.Where(node => node.Country .Equals(CountryName));
        }
        return lstStudents.ToList<Entity.Student>();
    }

这种方式是DLinq专家推荐的。

于 2013-09-19T12:52:20.603 回答