分组后把字段收集到 List 中
static void Main(string[] args)
{
using (var dbContext = new DataClasses1DataContext())
{
var q = from u in dbContext.User
group u by u.Name into g
select new
{
name = g.Key,
pwds = g.Select(m => m.Password).ToList()
};
var list = q.ToList();
}
}Code language: JavaScript (javascript)
结果结构:
| name | pwds |
|---|---|
| 张三 | [“111”, “222”] |
| 李四 | [“333”] |
方法语法等效写法:
var list2 = dbContext.User
.GroupBy(m => m.Name)
.Select(g => new
{
name = g.Key,
pwds = g.Select(m => m.Password).ToList()
})
.ToList();Code language: JavaScript (javascript)
关键要点:
| 要点 | 说明 |
|---|---|
g.Select(m=>m.Password) | 从每组中提取指定字段 |
.ToList() | 物化为 List<T>,每个分组对应一个列表 |
| 执行位置 | GroupBy 在数据库端,Select + ToList 在内存中完成 |
| 多字段 | g.Select(m => new { m.Password, m.ID }) 可提取多个字段 |
Previous: GroupBy 后转为 Dictionary
Next: ExecuteQuery 执行查询并返回实体列表