2012-05-03 34 views
0

不知道我的问题是否正确,或者我的计划是否正确,但我正在使用jquery数据表插件并从Json转换LINQ结果中获取其datasource从LINQ结果集中删除列名称

我的问题是,我的结果集包括我的数据表(ADO),我认为JQuery数据表(客户端)不需要的列的名称。

是否有可能,如果我不包括或从我的LINQ结果中删除列名称,然后再将其转换为json?

这是我的服务器代码。

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" 
] 
] 
+0

但你如何给数据表的列名? – bondythegreat

+0

不知道我是否理解你的问题,但我只是从DT的LINQ中选择新的{T.COL1,T.COL2}然后转换为json – user1215811

+0

请发布代码,你a)通过linq加载数据并将其转换为json和b)你在哪里使用数据表在客户端使用json。 – Marc

回答

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

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

这将工作。测试。

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

上一个DataTable的AsEnumerable扩展方法将返回数据行的集合。那么你可以从你的Linq Result和必要的字段中进行投影。由于它是dataRow类型,所以您需要指定每种列的类型。

+0

谢谢你Shyju,但我已经试过这段代码,结果是一样的。 我认为这将工作,如果我只包括1列。 var y =(从t中选择t.FirstName).ToList(); – user1215811

+0

仅使用您要在选择部分中输出的那些列 – Shyju

+0

@ user1215811:尝试更新的答案。 – Shyju