C#web API linq到SQL列表对象



我正在尝试为自动完成文本框创建一个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

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

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

当你获取数据时,一定要打电话给你的位置,否则你会获取所有的公司,并在内存中过滤它们,这是一个额外的步骤。

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

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();
        }

    }
}

要去掉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();

相关内容

  • 没有找到相关文章

最新更新