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
'wpf' 카테고리의 다른 글
해상도에 따른 이미지 크기 변경 (0) | 2017.08.07 |
---|---|
CommandParameter를 이용하여 List 안에 버튼 파라미터 전달 (0) | 2017.07.25 |
non-ASCII를 없애보자. (0) | 2017.07.21 |
Base 모델 클래스에 있는 데이터를 상속 클래스에 COPY 하기 (0) | 2017.07.21 |
listbox에서 오른쪽 정렬하고 싶을때 (0) | 2017.07.18 |