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}这样子的一条数据呢?
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();
Name = string.Join(",", q.Select(c => c.Name))
请问下我的Name不是u表中的,而是r表中的,请问这个怎么打出来,q当中没有这个字段
@你猜丶: 因为分组后的q,也相当于一个集合,只能获取分组字段Key。感觉我有点讲不清楚了。。。。
你可以将那个q输出来看看
@你猜丶:
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();
@你猜丶: 你可以把上面得到的集合,在重新分组得到想要的结果。。。这个应该可以
@华临天下: 额额,那我研究下
@你猜丶:
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表达式的精简版,你也可以学习一下
@华临天下: 最后一个方法貌似不行,得到集合后再分组的倒是可以。
@你猜丶: 都是同一种方法,只是写法不同吧,是不是Groupby之前没有ToList()?
方法可行的话,可不可以给个解决,正好让我看看没有豆豆的可不可以加一下声望。。。。
@华临天下: OK,确实是忘了ToList().
@你猜丶: 谢谢,加了一点声望。。。
var query = (from r in db.Roles
from u in db.Users
where u.Id == R.UserId
select u.UserName+“,”+r.Name ).ToList();
奥,错了