wpf
List Object를 Copy 해보자. (ICloneable)
동동(이재동)
2017. 7. 24. 15:03
List<Object Class> 의 리스트를 duplicate 해서 새로운 리스트를 만들고 그안에 object property를 수정하고 싶었다.
하지만 list를 duplicate 했더라도 안에 프로퍼티를 바꾸면 오리지널 데이터까지 바뀌어졌다.
그래서 해당 obejct class 에 ICloneable interface를 사용하여서 해결하였다.
이렇게 object에 interface를 선언하고
1 2 3 4 5 6 7 8 9 | public class OrderItem : ICloneable { public int GroupCount { get; set; } public object Clone() { return this.MemberwiseClone(); } } |
구현 하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private static List<OrderItem> GroupOrderItemByName(List<OrderItem> orderList) { var groupOrderItemList = new List<OrderItem>(); var result = orderList.GroupBy(s => s.Name).ToList(); foreach (var item in result) { var orderItem = (OrderItem)item.ToList()[0].Clone(); orderItem.GroupCount = item.Count(); groupOrderItemList.Add(orderItem); } return groupOrderItemList; } |
참고 : https://stackoverflow.com/questions/6569486/creating-a-copy-of-an-object-in-c-sharp