将IEnumerable转换为JSON

时间:2014-03-08 15:33:26

标签: c# asp.net json linq

我对IEnumerable很新,我相信Linq。我一直在研究如何将IEnumerable转换为JSON。我在这里看到了帖子:How do I convert an IEnumerable to JSON?。我尝试了解决方案,它对我不起作用。

我收到以下错误:

  

无法将类型'System.Collections.Generic.IEnumberable'隐式转换为'System.Collections.Generic.IEnumberable'存在显式转换(您是否错过了演员?

我使用的代码是:

var displayedOrganizations = filteredOrganizations.Skip(iDisplayStart).Take(iDisplayLength);

IEnumerable<Organization> result = from c in displayedOrganizations
                                   select new Organization[] { 
new Organization { ID = Convert.ToString(c.ID),CURR_PDD = c.CURR_PDD,NEW_PDD = c.NEW_PDD,CURR_OFFC = c.CURR_OFFC,NEW_OFFC = c.NEW_OFFC,
    CURR_DIV = c.CURR_DIV, NEW_DIV = c.NEW_DIV, CURR_BRANCH = c.CURR_BRANCH, NEW_BRANCH = c.NEW_BRANCH,CURR_DEPT = c.CURR_DEPT,NEW_DEPT = c.NEW_DEPT,
    CURR_DEPT_NAME = c.CURR_DEPT_NAME,NEW_DEPT_NAME = c.NEW_DEPT_NAME,ACTION = c.ACTION,USERID = c.USERID,UPDATED = c.UPDATED
}};

如果我使用原始代码:

var displayedOrganizations = filteredOrganizations.Skip(iDisplayStart).Take(iDisplayLength);
var result = from c in displayedOrganizations
             select new[] { 
    Convert.ToString(c.ID), c.CURR_PDD, c.CURR_OFFC, c.CURR_DIV,c.CURR_BRANCH, c.CURR_DEPT, c.CURR_DEPT_NAME, 
    c.NEW_PDD, c.NEW_OFFC, c.NEW_DIV,  c.NEW_BRANCH, c.NEW_DEPT, c.NEW_DEPT_NAME, c.ACTION, c.USERID, c.UPDATED 
};

我得到以下输出:

{"sEcho":0,"iTotalRecords":9,"iTotalDisplayRecords":9,"aaData":[["cb9f927f-0f2e-4a5e-898b-304e4e8518fd","MS","OHR"]]}

我试图获得此输出。我想要一个名称/值对而不是值。

{"sEcho":0,"iTotalRecords":9,"iTotalDisplayRecords":9,"aaData":[["ID":"cb9f927f-0f2e-4a5e-98b-304e4e8518fd","DIR":"MS","OFFC":"OHR"]]}

我不明白代码足以进行更改。我从另一个网站获得它,除了我想要进行的修改外,它完美地工作。

3 个答案:

答案 0 :(得分:3)

更改

IEnumerable<Organization> result =

var result =

答案 1 :(得分:1)

您的错误消息可以解决问题:

Cannot implicitly convert type
'System.Collections.Generic.IEnumberable<Organization[]>' to
'System.Collections.Generic.IEnumberable<Organization>'

您正在尝试将组织数组列表转换为组织列表。

您的select应该在输出中选择您想要的条目。不要将每个select包裹在一个数组中 - 而不是select new Organization[] { new Organization { ... }};只需选择对象:select new Organization { ... }

IEnumerable<Organization> result =
    from c in displayedOrganizations
    select new Organization { ... };

答案 2 :(得分:1)

更改

var displayedOrganizations = filteredOrganizations.Skip(iDisplayStart).Take(iDisplayLength);
IEnumerable<Organization> result = ...

为:

var displayedOrganizations = filteredOrganizations.Skip(iDisplayStart).Take(iDisplayLength);
IEnumerable<Organization[]> result = ...