使用LINQ GroupBy映射多个对象属性

时间:2018-01-26 03:51:10

标签: c# linq

我正在尝试将对象映射到另一个对象,但我想按键分组。 我已设法创建以下查询,但我需要在对象上填充更多属性以及键和值。

      var results = list.GroupBy(
    c => c.PropertyKey,
    c => c.Value,
    (key, v) => new MyObject {PropertyKey = key, Values = v.ToList()}
  );

但是,MyObject还有另一个属性Color,我还要填充list

我正在尝试做类似的事情:

      var results = list.GroupBy(
    c => c.PropertyKey,
    c => c.Color,
    c => c.Value,
    (key, v) => new MyObject {PropertyKey = key, Color = ???, Values = v.ToList()}
  );

有人可以推荐一种干净的方法吗?

1 个答案:

答案 0 :(得分:3)

您可以将它们指定为匿名对象

.GroupBy(c => new { c.PropertyKey, c.Color }, 
         c => c.Value,
        (key, v) => new MyObject { 
                        PropertyKey = key.PropertyKey, 
                        Color = key.Color, 
                        Values = v.ToList() });