有一张User表 ,结构如下
ID int
Phone1 nvarchar(50)
Phone2 nvarchar(50)
linq查询如下:
1 var data=from s in db.User 2 select new { 3 s.ID, 4 s.Phone1, 5 s.Phone2 6 };
然后我会把它转换成Json,如: [{"ID":"1","Phone1":"18888888888",,"Phone2":"18888888889"},...]
如果我希望转成 [{"ID":"1","Phone":[{"Phone":"18888888888"},{"Phone":"18888888889"}]},...]
Linq 该怎么写呢? 我思考了一下 大概是如下结构:
1 var data = from s in db.User 3 select new 4 { 5 s.ID,
Phone = new []{ 8 new{Phone=s.Phone1}, 9 new{Phone=s.1Phone2}, 10 } 11 };
可这样不对,请问该怎么写呢
试试这样:
var data = from s in db.User select new { s.ID, Phone = new List<object>{ new{Phone=s.Phone1}, new{Phone=s.Phone2} } };
然而并不是,你的需求是根据ID分组.所以得要groupby
我的需求不是根据ID分组 ,是把匿名对象的两个属性变为一个List集合 然后这个List集合又变成对象的一个属性
@coder_wang: 不好意思是我错了..审题不认真..
照理来说你这个写法是可以的,问题应该是出在你这是linq2sql了.你先把结果集查到内存中,然后在内存里这样操作看可以不
@吴瑞祥: 有道理,我试试看. 之前我是这样写
...
Phone=new List<string>{ s.Phone1, s.Phone2 },
...
结果生成的Json 是这样 {"ID":"1","Phone":["13xxxxx","13xxxxxx"]}
自己解决了,其实Exception提示的很清楚. 使用List'就行. 解决方法如下
1 Phone = new List<object> { 2 new {Phone=s.ContactPhone}, 3 new {Phone=s.ContactPhone1} 4 }