首页 新闻 会员 周边 捐助

Linq中Group by拼接字段如何写?

0
[已解决问题] 解决于 2018-04-16 17:00
复制代码
var query = (from r in db.Roles
             from u in db.Users
             where u.Id == R.UserId
             select new ListItem
             {
                 UserName = u.UserName,
                 Name = r.Name
             }).ToList();
复制代码

query 得到的是两条数据如何才能做成一条数据,

UserName为{liuwu},name加,拼接为{IAM,Administrator}这样子的一条数据呢?

你猜丶的主页 你猜丶 | 初学一级 | 园豆:135
提问于:2018-04-16 14:41
< >
分享
最佳答案
1

var query = (from r in db.Roles
from u in db.Users where u.Id == R.UserId
group u by u.UerName into q
select new { UserName = q.Key, Name = string.Join(",", q.Select(c => c.Name)) }).ToList();

奖励园豆:5
华临天下 | 小虾三级 |园豆:1501 | 2018-04-16 15:52

Name = string.Join(",", q.Select(c => c.Name))

请问下我的Name不是u表中的,而是r表中的,请问这个怎么打出来,q当中没有这个字段

你猜丶 | 园豆:135 (初学一级) | 2018-04-16 16:17

@你猜丶: 因为分组后的q,也相当于一个集合,只能获取分组字段Key。感觉我有点讲不清楚了。。。。

你可以将那个q输出来看看

华临天下 | 园豆:1501 (小虾三级) | 2018-04-16 16:18

@你猜丶: 

var query = (from r in db.Roles
from u in db.Users
where u.Id == R.UserId
select new ListItem
{
UserName = u.UserName,
Name = r.Name
}).ToList();

var res = (from t in query
group t by t.UerName into q
select new
{
UserName = q.Key,
Name = string.Join(",", q.Select(c => c.Name))
}).ToList();

华临天下 | 园豆:1501 (小虾三级) | 2018-04-16 16:22

@你猜丶: 你可以把上面得到的集合,在重新分组得到想要的结果。。。这个应该可以

华临天下 | 园豆:1501 (小虾三级) | 2018-04-16 16:23

@华临天下: 额额,那我研究下

你猜丶 | 园豆:135 (初学一级) | 2018-04-16 16:24

@你猜丶: 

var query = (from r in db.Roles
from u in db.Users
where u.Id == R.UserId
select new ListItem
{
UserName = u.UserName,
Name = r.Name
}).GroupBy(c => c.UerName).Select(c => new
{
UserName = c.Key,
Name = string.Join(",", c.Select(a => a.Name))
}); 

这个是用lambda表达式的精简版,你也可以学习一下

华临天下 | 园豆:1501 (小虾三级) | 2018-04-16 16:28

@华临天下: 最后一个方法貌似不行,得到集合后再分组的倒是可以。

你猜丶 | 园豆:135 (初学一级) | 2018-04-16 16:49

@你猜丶: 都是同一种方法,只是写法不同吧,是不是Groupby之前没有ToList()?

方法可行的话,可不可以给个解决,正好让我看看没有豆豆的可不可以加一下声望。。。。

华临天下 | 园豆:1501 (小虾三级) | 2018-04-16 16:58

@华临天下: OK,确实是忘了ToList().

你猜丶 | 园豆:135 (初学一级) | 2018-04-16 16:59

@你猜丶: 谢谢,加了一点声望。。。

华临天下 | 园豆:1501 (小虾三级) | 2018-04-16 17:05
其他回答(1)
0

var query = (from r in db.Roles

from u in db.Users

where u.Id == R.UserId

select u.UserName+“,”+r.Name ).ToList();

猝不及防 | 园豆:2878 (老鸟四级) | 2018-04-16 15:57

奥,错了

支持(0) 反对(0) 猝不及防 | 园豆:2878 (老鸟四级) | 2018-04-16 16:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册