如何使用LINQ查询DataSet并以JSON格式输出

时间:2012-07-19 12:43:45

标签: c# json linq dataset linq-to-dataset

我在WCF服务中有两个类:

[DataContract]
public class item
{
    [DataMember]
    public string categoryid
    {
        get;
        set;
    }
    [DataMember]
    public string title
    {
        get;
        set;
    }
}
[DataContract]
public class Employee
{
    [DataMember]
    public string Id
    {
        get;
        set;
    }
    [DataMember]
    public string Name
    {
        get;
        set;
    }       
}

我使用LINQ从DataSet获取数据:

public List<Employee> GetCities()
{ 
    var em = ((from DataRow dr in ds.Tables["City"].Rows
        select new
        {
            Id = dr["intCityId"].ToString(),
            Name = dr["strTitle"].ToString()                          
        }).Select(x => new Employee() { Id = x.Id, Name = x.Name}).ToList());
}

现在我通过返回此值来获取JSON数据。 此外,我也从item类中获取了值,但现在我想将列表数据转换为JSON格式,就像下面这样::

{"content":{"em" :[{ "id" : "1","Name" : "name"},{ "id" : "2","Name" : "name2"}],
"item":[{"category":"Sports","Title":"Football"},{"category":"Sports1","Title":"Football2"}]}}

含义我想将这两个类的结果合并为一个但是采用上面的格式,即干净的JSON格式

请帮助......

2 个答案:

答案 0 :(得分:2)

您还可以将匿名对象序列化为JSON。

示例:

var cities  = GetCities();
var employees = GetEmployees();
return new JsonResult { Data = new { Content = new { Employees = employees, Cities = cities } } };

答案 1 :(得分:1)

定义包含员工列表和项目列表的新对象内容。填充对象并通过JSON序列化程序对其进行序列化。