public List <TSearchEntityResult> SearchEntitiesByString(string strValue)
        {
            List <TSearchEntityResult> searchResult = new List <TSearchEntityResult>();

            List <string> entityNames = entityConfig.GetRootEntityNames();

            foreach (string entityName in entityNames)
            {
                string selectQuery = entityConfig.GetEntityQuery(entityName, EntityQueryType.FindByString);
                if (string.IsNullOrEmpty(selectQuery))
                {
                    continue;
                }

                DataTable entityResult = sqlRunner.GetTableResultWithParam(selectQuery, strValue);

                for (int i = 0; i < entityResult.DefaultView.Count; i++)
                {
                    int    key;
                    string foundStrValue = "n\a";
                    string foundColumn   = "";
                    bool   parseResult   = Int32.TryParse(entityResult.DefaultView[i]["KeyValue"].ToString(), out key);
                    if (parseResult)
                    {
                        foundStrValue = entityResult.DefaultView[i]["StrValue"].ToString();
                        foundColumn   = entityResult.DefaultView[i]["FoundColumn"].ToString();
                    }
                    searchResult.Add(
                        new TSearchEntityResult()
                    {
                        Key         = key,
                        StrValue    = foundStrValue,
                        FoundColumn = foundColumn,
                        EntityName  = entityName
                    });
                }
            }

            return(searchResult);
        }