首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法返回JsonResult

无法返回JsonResult
EN

Stack Overflow用户
提问于 2011-06-22 05:55:17
回答 2查看 1.8K关注 0票数 5

以下查询已成功运行。

代码语言:javascript
复制
var tabs = (
                from r in db.TabMasters
                orderby r.colID
                select new { r.colID, r.FirstName, r.LastName })
                .Skip(rows * (page - 1)).Take(rows);

现在我想返回JsonResult,如下所示

代码语言:javascript
复制
var jsonData = new
            {
                total = (int)Math.Ceiling((float)totalRecords / (float)rows),
                page = page,
                records = totalRecords,
                rows = (from r in tabs
                        select new { id = r.colID, cell = new string[] { r.FirstName, r.LastName } }).ToArray()
            };
return Json(jsonData, JsonRequestBehavior.AllowGet);

但是它会给我一个错误,比如:数组类型'System.String[]‘不能在查询结果中初始化。考虑使用'System.Collections.Generic.List`1System.String‘代替.

我该怎么做才能得到预期的结果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-22 06:00:37

我怀疑这就像使用AsEnumerable()将最后一部分推入进程中的查询一样简单。

代码语言:javascript
复制
var jsonData = new
{
    total = (int)Math.Ceiling((float)totalRecords / (float)rows),
    page = page,
    records = totalRecords,
    rows = (from r in tabs.AsEnumerable()
            select new { id = r.colID,
                         cell = new[] { r.FirstName, r.LastName } }
           ).ToArray()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);

为了清楚起见,您可能希望将该查询从匿名类型初始化器中提取出来:

代码语言:javascript
复制
var rows = tabs.AsEnumerable()
               .Select(r => new { id = r.colID,
                                  cell = new[] { r.FirstName, r.LastName })
               .ToArray();

var jsonData = new { 
    total = (int)Math.Ceiling((float)totalRecords / (float)rows),
    page,
    records = totalRecords,
    rows
};
票数 7
EN

Stack Overflow用户

发布于 2011-06-22 06:09:52

这是因为它正在添加到LINQ查询,即tabs IQueryable。然后尝试将LINQ表达式转换为SQL查询,而提供程序不支持投影数组。

您可以更改选项卡变量的LINQ表达式的赋值,以使用ToList立即实现DB结果,也可以将.AsEnumerable()添加到分配给匿名类型的rows字段即JsonResult的LINQ表达式中。AsEnumerable将把IQueryable降级为IEnumerable,这将阻止您的第二个LINQ查询尝试添加到DB查询中,并使其成为一个需要的LINQ调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6435520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档