検索条件を入力して検索する

検索はSelectメソッドで取得するカラムを指定する。今回は取得したデータを格納するViewAddressクラスを生成して指定した。クラスを指定しない場合は匿名クラスが生成される。

and検索をする場合はif文でWhereメソッドを数珠つなぎにすればよい。C#構文でつないでいるが、実際にSQLが実行されるのは使用するとき、下記コードではforeachで取り出すときに実行されるので何度もSQLが実行されるわけではない。ToListメソッドを実行したときにも確定してSQLが実行される。

private void UpdateAddressDataGrid()
{
    using (var lc = new LearnContext())
    {
        var result = lc.TrnAddresses.Select(x => new ViewAddress
        {
            Id = x.Id,
            Name = x.Name,
            ZipCode = x.ZipCode,
            Address = x.Pref + x.City + x.Town + x.Block + x.Apart,
            Tel = x.Tel,
            Mail = x.Mail,
            Memo = x.Memo
        });
        if (VM.Name != string.Empty)
        {
            result = result.Where(x => x.Name.Contains(VM.Name));
        }
        if (VM.ZipCode != string.Empty)
        {
            result = result.Where(x => x.ZipCode.Contains(VM.ZipCode));
        }
        if (VM.Address != string.Empty)
        {
            result = result.Where(x => x.Address.Contains(VM.Address));
        }
        if (VM.Tel != string.Empty)
        {
            result = result.Where(x => x.Tel != null && x.Tel.Contains(VM.Tel));
        }
        if (VM.Mail != string.Empty)
        {
            result = result.Where(x => x.Mail != null && x.Mail.Contains(VM.Mail));
        }
        if (VM.Memo != string.Empty)
        {
            result = result.Where(x => x.Memo != null && x.Memo.Contains(VM.Memo));
        }

        VM.AddressList.Clear();
        foreach (var item in result)
        {
            VM.AddressList.Add(item);
        }
    }
}

トップページ

コメント

タイトルとURLをコピーしました