LINQ分组依据

问题描述

我有类似的类对象列表

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

我有此列表,我想按UserId将它们分组。我得到的结果是List<MyClass>组,其中每个列表都是由用户

我已按该组应用该分组,但不确定选择应如何

  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"},ItemName = "ABweweC"}
            };

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

解决方法

您可以使用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());