从LINQ Resultset中删除列名

时间:2012-05-03 08:31:21

标签: jquery json linq datatable

不知道我的问题是否正确或我的计划是否正确,但我正在使用jquery数据广告插件并从datasource转换Json获取LINQ结果。

我的问题是,我的结果集包含我的数据表(ado)中的列的名称,我认为Jquery DataTable(客户端)不需要。

在将它转换为json之前,我是否可以在LINQ结果中包含或删除列名?

这是我的服务器代码。

 context.Response.ContentType = "application/json";
 var y = from t in dt select t;
 ret = JsonConvert.SerializeObect(y, Formatting.None);

 context.Response.Write(ret);

上面的代码返回包含所有列名的结果。我也在使用JSON.NET

以下是我如何填充我的dt

dsTableAdapters.dtTableAdapter adap = new dsTableAdapters.dtTableAdapter();
adap.Fill(ds.dt);

输出JSON:

[
[
    "COL1": 1,
    "COL2": "R1C2"
},
{
    "COL1: 2,
    "COL2": "R2C2"
},
{
    "COL1": 3,
    "COL2": "R3C3"
}
]

基于jquery Datatable插件的必需输出必须是:

[
[
    1,
    "R1C2"
],
[
    2,
    "R2C2"
],
[
    3,
    "R3C3"
]
]

1 个答案:

答案 0 :(得分:0)

var y = (from t in dt.AsEnumerable() 
         select new { COL1= t.Field<string>("FirstName"), 
                      COL2 = t.Field<string>("LastName") }).ToList();

假设dt是你的DataTable,你有2列名为FirstName和LastName,你只想输出那些。

这会奏效。测试

http://msdn.microsoft.com/en-us/library/system.data.datatableextensions.asenumerable.aspx

DataTable上的AsEnumerable扩展方法将返回DataRows集合。然后使用必填字段从Linq结果中进行投影。由于它是dataRow类型,因此您需要指定每个列类型的内容。