LINQ 分组依据

LINQ Grouping by

我有 class 个相似对象的列表

 public class MyClass
    {
        public int UserId { get; set; }
        public int ItemId { get; set; }
        public string ItemName { get; set; }
    }

我有这个列表,我想在其中按 UserId 对它们进行分组。我想要的结果是 List<MyClass> 的集合,其中每个列表由用户

我已经应用了分组依据,但不确定 select 应该如何

  var group = items.GroupBy(g => g.UserId).
                Select(s=> new MyClass { 
                UserId = s.Key,
              
                }).ToList();

示例数据

  var items = new List<MyClass>
            {
                new MyClass{UserId = 100, ItemId = 245, ItemName = "ABC"},
                new MyClass{UserId = 100, ItemId = 125, ItemName = "ABCff"},
                new MyClass{UserId = 150, ItemId = 233, ItemName = "AweBC"},
                new MyClass{UserId = 100, ItemId = 233, ItemName = "ABweweC"}
            };

这里我希望有两组 List<MyClass> 一组用户 ID 为 100 的列表,另一组用户 ID 为 150 的列表,每个列表将有 2 个 class 个对象

您可以用 UserId 作为键创建字典:

var groups = items.GroupBy(c => c.UserId)
                  .ToDictionary(g => g.Key, g => g.ToList());

现在举例如下:

 Console.WriteLine(String.Join(Environment.NewLine, groups[100]));

将打印出:

100 245 ABC
100 125 ABCff
100 233 ABweweC

我想你是在追求这个会给你 List<List<MyClass>>

var group = items.GroupBy(g => g.UserId).Select(s => s.ToList());