web api „обект“ не съдържа дефиниция за „ToList“

Наистина не мога да видя какво съм пропуснал тук.
Това е код, който преработвам от GET към POST по искане на другата страна на разработката на проекта.

        using VirtualAssistant.Models;
        using VirtualAssistant.DataModel;
        using System;
        using System.Collections.Generic;
        using System.Configuration;
        using System.Linq;
        using System.Net;
        using System.Net.Http;
        using System.Web.Http;
        using System.Data;
        using System.Data.Entity;
        using System.Data.Entity.Infrastructure;
        using System.Web.Http.Description;
        using System.Collections;

    namespace LloydsVirtualAssistant.Controllers
    {
        public class FetchController : ApiController
        {

            public class PersonList

            {
                public int ClientID { get; set; }
                public int PersonId { get; set; }
                public string FullName { get; set; }
                public string EmailAddress { get; set; }
                public string BusinessNumber { get; set; }
                public string MobileNumber { get; set; }
                public int LocationId { get; set; }
            public int BuidlingId { get; set; }
            public string LocationAddress { get; set; }
            public string PostCode { get; set; }
            public string BranchSortCode { get; set; }
            public string AreaName { get; set; }
        }




        // GET: ChatAi/Person/5
        [Route("FetchPerson")]

        public HttpResponseMessage POST([FromBody] PersonList PersonId)
        {
            List<PersonList> results = new List<PersonList>();
            var result = new FetchDataContext().usp_FetchPerson_GetById(PersonId).ToList();

            foreach (var item in result.ToList())
            {
                results.Add(new PersonList
                {
                    ClientID = (int)item.ClientID,
                    PersonId = (int)item.PersonId,
                    FullName = item.FullName,
                    EmailAddress = item.EmailAddress,
                    BusinessNumber = item.BusinessPhone,
                    MobileNumber = item.MobileNumber,
                    LocationId = (int)item.LocationId,
                    BuidlingId = (int)item.BuildingId,
                    LocationAddress = item.LocationAddress,
                    PostCode = item.PostCode,
                    BranchSortCode = item.BranchSortCode,
                    AreaName = item.AreaName
                });
            }
            {
                return results;
            }
        }
    }
}

Грешката гласи

Сериозност
Код Описание Грешка в състояние на потискане на реда на файла на проекта CS1061 „обектът“ не съдържа дефиниция за „ToList“ и нито един метод за разширение „ToList“, приемащ първи аргумент от тип „object“, може да бъде >намерен (пропускате ли директива за използване или справка за асемблиране?)>VirtualAssistant.....

Първоначално това работеше като GET, но екипът иска POST. Опитът ми за рефакторинг се проваля. Разбира се, ще продължа да търся, чудя се дали някой от вас професионалисти може да забележи грешката ми? Това е първият ми уеб API - добре, ако не броите GET, който работеше. Областта ми на експертиза е SQL, просто изучавам ASP.NET (и го харесвам)

Благодаря ви много предварително, че погледнахте.


person Leigh Noel Purdie    schedule 06.04.2018    source източник
comment
Изненадан съм, че това дори компилира usp_FetchPerson_GetById(PersonId), тъй като PersonId е от тип PersonList (вижте входящите си параметри).   -  person Igor    schedule 06.04.2018
comment
Също така верижното new FetchDataContext е лоша идея, тъй като не изхвърляте контекста на данните. Това означава, че вашите връзки за данни могат да останат отворени, докато контекстът в крайна сметка бъде изхвърлен от събирането на боклук на CLR, което не е детерминистично.   -  person Igor    schedule 06.04.2018
comment
Поздрави Игор, страхотен съвет. Със сигурност ще разгледаме това днес. И не, нямаше да се компилира, тъй като промених работния си GET и се опитах да създам POST. Но прекарах вчера, занимавайки се с четене от старата школа и онлайн курс. Надявам се да мога да стана начинаещ c# за един уикенд. Благодаря!!   -  person Leigh Noel Purdie    schedule 08.04.2018


Отговори (1)


Тук извличате един елемент:

var result = new FetchDataContext().usp_FetchPerson_GetById(PersonId).ToList();

Можете да използвате само ToList() в IEnumerable или колекция, масив и т.н.

Вместо това опитайте следното:

var person = new FetchDataContext().usp_FetchPerson_GetById(PersonId);
if (person != null) {
    results.Add(person);
}
person Isma    schedule 06.04.2018
comment
Благодаря ви много, прекарах целия ден в събота, като направих крачка назад и изучавах това от самото начало. 5-часовият онлайн курс си заслужаваше, вместо да се гмуркаме задълбочено и да го хакваме. Напълно случайно API разработчик, опитът ми е в SQL. Наистина оценявам обратната връзка, така че не се налага днес да започвам от нулата, за да поправя това. Благодаря ти - person Leigh Noel Purdie; 08.04.2018