Не удается неявно преобразовать строку типа в строку [] в методе автозаполнения - PullRequest
0 голосов
/ 13 августа 2010

Все во второй половине дня - пятница, 13-е, поэтому, конечно, у меня абсолютная кобыла !!!

Приведенный ниже код «должен» создать список элементов, которые будут использоваться при автозаполнении текстового поля.

public string[] GetAutoComplete(string prefixText, int count)
    {
        try
        {
            string memberid = HttpContext.Current.Session["VDS_MemberID"].ToString(); 
            string locationid = HttpContext.Current.Session["VDS_LocationID"].ToString();
            string inhouse = HttpContext.Current.Session["VDS_Inhouse"].ToString();
            string supplier = HttpContext.Current.Session["VDS_Supplier"].ToString();
            string groupw = HttpContext.Current.Session["VDS_Group"].ToString();
            string external = HttpContext.Current.Session["VDS_External"].ToString();

            VDSORDAL.PDC_VDSOREntities autocomplete = new VDSORDAL.PDC_VDSOREntities();

            var r = (from p in  autocomplete.tblAutoCompletes
                    where p.MemberId == memberid && p.LocationId == locationid && p.ACItem.Contains(prefixText)
                    select p);

            if (inhouse != "DoNotDisplayInhouse")
                         r = r.Where(p => p.ACItem == inhouse);

            if (supplier != "DoNotDisplaySupplier")
                r = r.Where(p => p.ACItem == supplier);

            if (groupw != "DoNotDisplayGroup")
                r = r.Where(p => p.ACItem == groupw);

            if (external != "DoNotDisplayExternal")
                r = r.Where(p => p.ACItem == external);

            return r.Distinct().OrderBy(p => p.ACItem).ToString();

        }

Однако я получаю название вопроса как ошибку.

Кто-нибудь может предложить способ обойти это? Извинения .. У меня плохой день.

Ответы [ 3 ]

1 голос
/ 13 августа 2010

Последняя строка должна быть:

return r.Distinct().OrderBy(p => p.ACItem).ToArray();
1 голос
/ 13 августа 2010

Возможно

return r.Distinct().OrderBy(p => p.ACItem).ToString();

должно быть

return r.Distinct().OrderBy(p => p.ACItem).ToArray(); 

Обновление:

Похоже, это твоя настоящая проблема. Попробуйте (следующий код скомпилирован мозгом)

return (from p in r orderby p.ACItem desc select p.ACItem).ToArray();

Я предполагаю, ACItem - это строка, которую вы хотите вернуть, если нет, выберите то, что вы хотите в массиве.

Или, возможно,

return (from p in r where p != null orderby p.ACItem desc select p.ACItem).ToArray();

where p != null может быть необходимо, вам в значительной степени нужно осмотреть r и посмотреть, что там, на самом деле недостаточно информации, чтобы иметь возможность ответить на этот вопрос окончательно. Тем не менее, .ToArray вместо .ToString все еще является ответом на вашу проблему, все остальное - другой вопрос.

0 голосов
/ 13 августа 2010

Не делай ToString(). Используйте либо ToArray(), либо ConvertAll<string>().ToArray()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...