使用.GroupBy()我可以合并此列表,
AppleId Color
----------------
1 Green
1 Red
2 Red
3 Green
4 Red
4 Green
进入此列表:
AppleId Green Red
------------------------
1 1 1
2 0 1
3 1 0
4 1 1
重复的AppleId记录已删除,并且“颜色”列已拆分为两个布尔列。
但是,如果我还有另一个要保留在第一个列表中的值,该怎么办?因此,第一个表现在将如下所示:
AppleId Color Value
-----------------------------
1 Green Value1
1 Red Value1
2 Red Value2
3 Green Value3
4 Red Value4
4 Green Value4
分组表如下所示:
AppleId Green Red Value
-----------------------------------
1 1 1 Value1
2 0 1 Value2
3 1 0 Value3
4 1 1 Value4
这是c#列表:
var items = new List<Item>
{
new Item {Color = "Green", Id = 1, Value = Value1},
new Item {Color = "Red", Id = 1, Value = Value1},
new Item {Color = "Red", Id = 2, Value = Value2},
new Item {Color = "Green", Id = 3, Value = Value3},
new Item {Color = "Red", Id = 4, Value = Value4},
new Item {Color = "Green", Id = 4, Value = Value4}
};
我尝试使用这个
var q = items.GroupBy(x => x.Id)
.Select(group => new
{
Id = group.Key,
Green = group.Any(item => item.Color == "Green"),
Red = group.Any(item => item.Color == "Red"),
Value = x.Value
});
和其他一些变体,但无法使其正常工作。
试试这个:想法是通过使用id和value分组
var q = items
.GroupBy(x => new { x.Id, x.Value})
.Select(group => new
{
Id = group.Key.Id,
Green = group.Any(item => item.Color == "Green"),
Red = group.Any(item => item.Color == "Red"),
Value = group.Key.Value,
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句