2013-04-25 3 views
1

List<List<Vertex>>, Vertex의 속성은 id입니다. List<Vertex>>을이 목록에 추가해야하지만 중복 목록은 필요하지 않습니다.목록에 개체 목록 추가 <목록 >

public void AddComponent(List<Vertex> list) 
{ 
    List<List<Vertex>> components = new List<List<Vertex>>; 

    //I need something like 
     if (!components.Contain(list)) components.Add(list); 
} 
+3

무엇 두 개의 'List '의 평등을 의미합니다. 두 개의 목록이 동일한 ID를 갖는 꼭지점을 포함한다면 동일합니까? 명령이 중요합니까? –

+0

"중복 목록"의 정의는 무엇입니까? 아이템 수, 동일한 ID를 가진 아이템? 같은 순서? – sll

+0

(<1,2,3,4>, <1,3,2,4>)은 동일한 ID 및 개수의 목록 인 경우 – Radka

답변

0

당신은 같은 것을 할 수 : -

public void AddComponent(List<Vertex> list) 
{ 
    var isInList = components.Any(componentList => 
    { 
     // Check for equality 
     if (componentList.Count != list.Count) 
      return false; 

     for (var i = 0; i < componentList.Count; i++) { 
      if (componentList[i] != list[i]) 
       return false; 
     } 

     return true; 
    }); 

    if (!isInList) 
     components.Add(list); 
} 
+0

(var i = 0; i rummykhan

+2

감사합니다; 최근에 자바 스크립트에서 너무 많은 시간을 보냈습니다 :-) – gerrod

+0

if (componentList [i] .id! = list [i] .id) id를 비교하려면 if. – Radka

1

당신은 SequenceEqual을 사용할 수 있습니다 (이 주문도 동일해야 함을 의미) : 먼저 필요가 정의하는

if (!components.Any(l => l.SequenceEqual(list))) 
    components.Add(list); 
+1

동의; 이것은 더 나은 해결책이지만, "복제"가 무엇을 의미하는지 확신 할 수 없으므로 평등 테스트를 열린 채로두고 싶었습니다. – gerrod