首页 新闻 搜索 专区 学院

Linq to Sql 问题,匿名对象嵌套

0
悬赏园豆:20 [已解决问题] 解决于 2015-12-30 10:22

有一张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 };

可这样不对,请问该怎么写呢

coder_wang的主页 coder_wang | 初学一级 | 园豆:193
提问于:2015-12-30 09:28
< >
分享
最佳答案
1

试试这样:

 var data = from s in db.User
                 select new
                 {
                     s.ID, 
                     Phone = new List<object>{ 
                                         new{Phone=s.Phone1},
                                         new{Phone=s.Phone2}
                                  }
                 };            
收获园豆:20
米修君 | 小虾三级 |园豆:553 | 2015-12-30 10:16
其他回答(2)
0

然而并不是,你的需求是根据ID分组.所以得要groupby

吴瑞祥 | 园豆:28820 (高人七级) | 2015-12-30 09:31

我的需求不是根据ID分组 ,是把匿名对象的两个属性变为一个List集合 然后这个List集合又变成对象的一个属性 

支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2015-12-30 09:36

@coder_wang: 不好意思是我错了..审题不认真..

照理来说你这个写法是可以的,问题应该是出在你这是linq2sql了.你先把结果集查到内存中,然后在内存里这样操作看可以不

支持(0) 反对(0) 吴瑞祥 | 园豆:28820 (高人七级) | 2015-12-30 09:42

@吴瑞祥: 有道理,我试试看.  之前我是这样写 

...
Phone=new List<string>{ s.Phone1, s.Phone2 },
...
结果生成的Json 是这样 {"ID":"1","Phone":["13xxxxx","13xxxxxx"]}
支持(0) 反对(0) coder_wang | 园豆:193 (初学一级) | 2015-12-30 09:54
0

自己解决了,其实Exception提示的很清楚.  使用List'就行. 解决方法如下

1 Phone = new List<object> { 
2     new {Phone=s.ContactPhone},
3     new {Phone=s.ContactPhone1}
4 }
coder_wang | 园豆:193 (初学一级) | 2015-12-30 10:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册