【问题标题】:WebAPI return an IQueryable that is like an array is javascriptWebAPI 返回一个 IQueryable 就像一个数组是 javascript
【发布时间】:2018-09-27 09:06:11
【问题描述】:

我有一个 WebAPI 方法,它返回一个“复杂”对象的 IQueryable,如下所示:

[Route("api/INV_API/deptSelect")]
public IQueryable<DEPTNAME_DESCR> GetDistinctDeptSelect([FromUri] string q)
{
        if (q != null)
        {
                         var query = (from d in db.DEPTs
                         where d.DESCR.Contains(q) || d.DEPTNAME.Contains(q)
                         select new DEPTNAME_DESCR { DEPTNAME = d.DEPTNAME, DESCR = d.DESCR }).Distinct();


            return query;

        }
        else
        {
            var query = (from d in db.DEPTs
                         select new DEPTNAME_DESCR { DEPTNAME = d.DEPTNAME, DESCR = d.DESCR }).Distinct();


            return query;
        }
}

当使用 AJAX 从该方法获取 GET 时,我会收到某种 javascript 数组,如下所示:

我有另一个 WebAPI 方法,我试图返回一个 IQueryable&lt;string&gt; 表单,最初是一个字符串列表:

[HttpGet]
[Route("api/INV_API/requesterIdSelect2")]
public IQueryable<string> GetListOfUserId([FromUri] string q)
{
   var result = db.Database.SqlQuery<string>("SelectUSERIDFromSM @searchterm", new SqlParameter("@searchterm", q)).ToList();

        return result.AsQueryable<string>();
}

但是,当我检查从 AJAX GET 返回的内容时,它看起来像这样:

我试图了解我在第二种方法中做错了什么。我必须对我返回的任何内容进行序列化吗?还是我的 SQL 查询本身有问题。

如果这还不够,我会提供更多信息。

【问题讨论】:

    标签: javascript asp.net ajax asp.net-web-api2


    【解决方案1】:

    像这样更新你的方法:

    [HttpGet]
    [Route("api/INV_API/requesterIdSelect2")]
    public IEnumerable<string> GetListOfUserId([FromUri] string q)
    {
       var result = db.Database.SqlQuery<string>("SelectUSERIDFromSM @searchterm", new SqlParameter("@searchterm", q)).ToList();
    
            return result;
    }
    

    IQueryable 表示存储的查询,而不是查询返回的结果。要执行查询,您必须像在第一个代码 sn-p 中那样执行 ToListDistinct 之类的方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-24
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      相关资源
      最近更新 更多