分组后把字段收集到 List 中

分组后把字段收集到 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)

结果结构:

namepwds
张三[“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 }) 可提取多个字段

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注