Использование автозаполнения с помощью запроса LINQ с псевдонимом

#c# #json #asp.net-mvc #linq #autocomplete

#c# #json #asp.net-mvc #linq #автозаполнение

Вопрос:

Я использую автозаполнение с запросом LINQ. Код работает, когда я не использую псевдоним для столбца, но выдает ошибку, когда я использую псевдоним. Вот код, который работает:

 var suggestions = from v in db.ValueDocument
                          select v.HeaderTitle;

var namelist = suggestions.Where(n => n.ToLower().StartsWith(term.ToLower()));

return this.Json(namelist, JsonRequestBehavior.AllowGet);
 

Если я изменю запрос на ниже, он выдает ошибку.

 var suggestions = from v in db.ValueDocument
                           select new { Header = v.HeaderTitle };
 

Ошибка, которую я получаю, связана с AnonymousType .

Если бы кто-нибудь мог указать мне правильное направление, это было бы фантастически. Спасибо!

Ответ №1:

В LINQ нет объектной модели для ваших предложений с псевдонимами.

Я бы создал модель для этого документа с псевдонимом ValueDocument:

 public class ValueDocumentAlias
{
     public string Header {get;set;}
}
 

Затем измените свой код, чтобы он выглядел следующим образом:

 var suggestions = from v in db.ValueDocument
                  select new ValueDocumentAlias{ Header=v.HeaderTitle };

var namelist = suggestions.Where(n => n.Header.ToLower().StartsWith(term.ToLower()));

return this.Json(namelist, JsonRequestBehavior.AllowGet);