0

検索フィルターフォームと、フォームから取得され、null である必要がある 8 つのパラメーターがある asp.net mvc プロジェクトがあります。検索フォームのすべてのフィールドに入力すると、すべて正常に機能します。しかし、欠落しているフィールドを保持すると、テーブルからすべての行が返されます。次の式があります。

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

null 変数をチェックするためのトリックはありますか? if/else 文をたくさん書かなければならないので、正しくないと思います。

4

2 に答える 2

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 に答える