検索は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);
}
}
}
コメント