如何在webAPI方法中获取表的特定列

时间:2017-09-16 17:02:03

标签: c# arrays sql-server asp.net-mvc-4 asp.net-web-api

我有一个带有WebApi方法的 MVC4 应用程序,它从数据库中获取整个表数据。现在我想从中只提取两列。我该怎么做?

我知道阵列将用于这样做,但不知道.net中的语法。 这是我的WebAPi函数,它从SQL服务器数据库获取整个表数据:

namespace BRDCEP_MIS.Areas.BRDCEP.Controllers
{
    public class WebApiController : ApiController
    {

        //api get method.

        //[Route("WebApi/GetPscTargets")]

        public HttpResponseMessage Get() {
            using (ApplicationDbContext db = new ApplicationDbContext())
            {

                List<PscDistrictTargets> xx = new List<PscDistrictTargets>();
                xx = db.PscDistrictTargetss.ToList();
                //xx.ID = Convert.ToString(DATA);
                HttpResponseMessage response = new HttpResponseMessage();
                response = Request.CreateResponse(HttpStatusCode.OK, xx);
                return response;
            }

        }

    }
}

1 个答案:

答案 0 :(得分:2)

您可以使用Select方法,在LINQ查询中仅对DTO /视图模型的对象所需的属性进行投影,以表示此数据。

因此,创建一个DTO类来表示只需要那些属性的数据,

public class MyDto
{
    public int TargetId { set; get; }
    public string TargetName { set; get; }
}

现在更新你的LINQ查询使用Select方法只获取那些属性并将它们投射到我们的dto对象。

var items = db.PscDistrictTargetss
              .Select(f => new MyDto { TargetName = f.Name, 
                                       TargetId = f.Id})
              .ToList();
return Request.CreateResponse(HttpStatusCode.OK, items );

假设PscDistrictTargets实体类具有NameId属性。根据您的实际属性名称更新该部分。