0

我正在尝试为自动完成文本框创建一个 Web API。我有处理示例数据的 API,但我不知道如何从我的表中添加数据。

这是我的控制器:

namespace IMDSEbs.Controllers
{
    public class CompanyController : ApiController
    {
        // GET: api/Company/GetCompanyNames
        IMDSDataContext dc = new IMDSDataContext();
        public List<CompanyName> results = new List<CompanyName>
        {
            new CompanyName{ID = 1, Name = "Sonu Nigam"},

        };

        // GET api/values
        public IEnumerable<CompanyName> GetCompanyNames(string query)
        {
            return results.Where(m => m.Name.Contains(query)).ToList();
        }
    }
}

这是表结构(名称实际上是公司名称):

ID              Name
------------------------------------
1               Abc Company
2               cde Company
3               fgh Company
4               ijk Company
4

3 回答 3

3

如果你试图调用你的数据库?我假设您的上下文是基于 EntityFramework 的,如果是这样,您可以这样做:

dc.Companies.Where(x => x.Name.Contains(query)).Select(x => new {x.id, x.Name}).ToList();

确保在获取数据时调用您的位置,否则您将获取所有公司并将它们过滤到内存中,这是一个额外的步骤。

于 2016-05-17T17:49:18.277 回答
0

这是我一直在寻找的答案。

namespace IMDSEbs.Controllers
{
    public class CompanyController : ApiController
    {

        // GET api/values
        public IEnumerable<CompanyName> GetCompanyNames(string query)
        {
            IMDSDataContext dc = new IMDSDataContext();
            List<CompanyName> results = new List<CompanyName>();
            foreach(IMDSEbs.Models.Company comp in dc.Companies)
            {
                results.Add(new CompanyName()
                {
                    ID = comp.CompanyID,
                    Name = comp.CompanyName
                });
            }

            return results.Where(m => m.Name.Contains(query)).ToList();
        }


    }
}
于 2016-05-17T17:49:57.103 回答
0

要摆脱 foreach,请执行以下操作(可能需要一些修饰......)

return 
//Get the Entities you need...
dc.Companies
//Narrow down what you are selecting...
.Where(m => m.Name.Contains(query))
//convert the entity into the object you need...
.Select(comp => new CompanyName(){
                ID = comp.CompanyID,
               Name = comp.CompanyName})
.ToList();
于 2017-08-29T19:57:32.917 回答