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());
我有 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());