0

次の方法を使用して、動的 soql を使用して連絡先レコードのかなり単純なクエリを実行しています。

public PageReference contactSearch() {
    contactResultSetSize = 0;
    if(!String.isEmpty(firstname) || !String.isEmpty(lastname) || !String.isEmpty(company)) {
        string soql = 'Select firstname, lastname, account.Name, account.BillingStreet, account.BillingCity, account.BillingState, account.BillingPostalCode From Contact';
        String whereClause = ''; 

        if(!String.isEmpty(firstname)) {
            whereClause = ' Where firstname like \'%' + firstname + '%\'';
        }
        if(!String.isEmpty(lastname)) {
            if(!String.isEmpty(firstname)) {
                whereClause += ' AND lastname like \'%' + lastname + '%\'';
            }
            else {
                whereClause = ' Where lastname like \'%' + lastname + '%\'';
            }
        }
        if(!String.isEmpty(company)) {
            if(!String.isEmpty(firstname) || !String.isEmpty(lastname)) {
                whereClause += ' AND account.Name like \'%' + company + '%\'';
            }
            else {
                whereClause = ' Where account.Name like \'%' + company + '%\'';
            }
        }
        soql = soql + whereClause;

        List<Contact> searchResults = Database.query(soql);
        contactResultSetSize = searchResults.size();
        if(contactLinesForPage == null) {
            contactLinesForPage = new List<ContactWrapper>();
        }

        for(Contact c : searchResults) {
            contactLinesForPage.add(new ContactWrapper(contactLinesForPage.size(), c, ''));
        }
    }
    return null;    
}

私はラッパー クラスを使用しており、contactLinesForPage はラッパー オブジェクトのリストです。

public List<ContactWrapper> contactLinesForPage {get; set;}

ユーザーが複数の検索を行うため、レコードを searchResults リストに再度追加したくありません。検索で重複したレコードが返されないように、レコードがオブジェクトに既に存在するかどうかを確認するにはどうすればよいですか?

助けてくれてありがとう。

4

2 に答える 2