0

顧客名、郵便番号、電話番号を検索する検索機能があります。また、結合テーブル CustomerContact をルックアップして FirstName と Surname を検索する関数も必要です。

私は次のものを持っています:

var customer = from c in db.Customer.Include(c => c.CustomerContact)
                select c;


if (!String.IsNullOrEmpty(searchString))
{
    customer = customer.Where(c => c.CustomerName.ToUpper().Contains(searchString.ToUpper())
                        || c.Postcode.ToUpper().Contains(searchString.ToUpper())
                        || c.CustomerContact.FirstName.ToUpper().Contains(searchString.ToUpper())
                        || c.CustomerContact.Surname.ToUpper().Contains(searchString.ToUpper())
                        || c.Telephone.ToUpper().Contains(searchString.ToUpper()));
}

エラーは発生しません。FirstName と Surname を検索しても結果が返されません。

4

2 に答える 2

0

customer = customer.Include("CustomerContact").Where(...

于 2012-11-16T12:10:39.933 に答える
0

他の何かに取り組んでいるときに、これに対する答えに出くわしました。

これが私の最終的なコードです。誰かに役立つことを願っています。

var customer = from c in db.Customer
               select c;

if (!String.IsNullOrEmpty(searchString))
{
    customer = customer.Where(c => SqlFunctions.StringConvert((double)c.CustomerID).Trim().Equals(searchString)
                        || c.CustomerName.ToUpper().Contains(searchString.ToUpper())
                        || c.Postcode.ToUpper().Replace(" ", "").Equals(searchString.ToUpper().Replace(" ", ""))
                        || c.Telephone.ToUpper().Replace(" ", "").Equals(searchString.ToUpper().Replace(" ", ""))
                        || c.CustomerContact.Where(x => x.FirstName.ToUpper().Contains(searchString.ToUpper())).Any()
                        || c.CustomerContact.Where(x => x.Surname.ToUpper().Contains(searchString.ToUpper())).Any()
                        || c.CustomerContact.Where(x => (x.FirstName.ToUpper() + " " + x.Surname.ToUpper()).Contains(searchString.ToUpper())).Any());
        }
于 2013-10-23T11:21:00.380 に答える