我想GroupBy记录列表中的多个对象,而不是简单的多个值。使用LINQ GroupBy按引用对象进行分组而不是值对象
我无法使用引用类型对象进行分组。我有一个包含Room,Type和DateTime的对象集合。房间,类型和日期时间都具有与它们相关联的属性。我已经将IE适配界面添加到了房间,并且这种类型认为这足以与群组一起使用。
var groups = collection
.Where(g => g.Stage == InventoryStage.StageA)
.GroupBy(g => new {g.BirthDate, g.Room, g.Type});
为了使此代码正常工作,我必须调用我们对这些对象的特定属性进行分组。但问题是,我需要存储在分组的“密钥”复杂的对象,这样我就可以访问该组的具体信息
var groups = collection
.Where(g => g.Stage == InventoryStage.StageA)
.GroupBy(g => new {
Birthday = g.BirthDate,
RoomName = g.Room.Name,
TypeName = g.Type.Name
});
我最终不得不做^拿到分组工作,然而这些团体失去了我想要的复杂的东西。
你的'房间'和'类型'应该重写'Equals' +'GetHashCode'或/并实现'IEquatable'。 –